类属性和实例对象
1 类属性
1 类属性指的是定义在类中,但在各个类方法外的变量。
2 类属性的特点是:所有类的实例化对象都可以共享类变量的值,即类变量可以在所有实例化对象中作为公用资源。
下面举例详细说明类属性的性质
# 定义一个Classmates的类,添加两个类属性
class Classmates():
girl = '小红'
boy = '小明'
def info(self):
print(Classmates.girl)
print(Classmates.boy)# 小红 小明
a = Classmates()
a.info()
Classmates.girl = '小粒'
Classmates.boy = '小刚'
a.info() # 小粒 小刚 说明改变类变量的值会作用于该类所有的实例化对象
a.girl = 'sad'
print(Classmates.girl) # 小粒 说明类属性只能通过类对象来修改,无法通过实例对象来修改
2 实例属性:
1 实例属性指的是通过实例对象添加的属性,也就是定义在类的方法中的属性,它的特点是:只作用于调用方法的对象
例如下面的name就是定义在类方法中的是属性,就是实例属性
2 实例属性只能通过实例属性来访问和修改,类对象无法访问和修改
定义一个Classmates的类,添加两个类属性
class Pets():
def __init__(self,name):
self._name = name
def info(self):
print(self._name)
a =Pets('哈士奇')
a.info() # 哈士奇
# 修改实例属性
a._name = '兔子'
a.info() # 兔子
# 添加实例属性
a.age = 2
print(a.age) # 2
# 不能通过实例给类添加属性
print(Pets.age) # AttributeError: type object 'Pets' has no attribute 'age'