Python类属性和实例属性
类属性是定义在类中的变量,被所有实例共享。它在所有实例中都具有相同的值。
实例属性是定义在实例中的变量,每个实例都可以有自己的值。实例属性具有优先级,如果实例属性和类属性重名,实例属性会覆盖类属性。
以下是一个使用类属性和实例属性的示例代码:
class Circle:
# 类属性
pi = 3.14
def __init__(self, radius):
# 实例属性
self.radius = radius
def calculate_area(self):
# 计算圆的面积
return self.pi * self.radius ** 2
# 创建两个实例
circle1 = Circle(5)
circle2 = Circle(10)
# 访问类属性
print(circle1.pi) # 输出 3.14
print(circle2.pi) # 输出 3.14
# 访问实例属性
print(circle1.radius) # 输出 5
print(circle2.radius) # 输出 10
# 访问实例方法
print(circle1.calculate_area()) # 输出 78.5
print(circle2.calculate_area()) # 输出 314.0
# 修改实例属性
circle1.radius = 7
print(circle1.radius) # 输出 7
# 实例属性会覆盖同名的类属性
circle1.pi = 3.14159
print(circle1.pi) # 输出 3.14159
print(circle2.pi) # 输出 3.14
在上面的示例中,pi
是一个类属性,被所有Circle
实例共享。radius
是一个实例属性,每个实例都有自己的值。每个实例都可以访问类属性和实例属性,并且可以修改实例属性的值。当实例属性与类属性重名时,实例属性会覆盖类属性的值。