python是一个动态语言。如果直接给python的一个对象不存在的属性赋值,这个属性会被添加到对象的属性中
例:
class Student:
def __init__(self, name, age):
self.name = name
self.age = age
student1 = Student('小明', 18)
student1.city = '武汉'
print('city: ', student1.city)
当然,我们可以使用__slots__属性来规定对象可以存在的属性
__slots__属性
__slots__这个属性直接定义在类里,是一个元组,用来规定对象可以存在的属性
class Student:
__slots__ = ('name', 'age')
def __init__(self, name, age):
self.name = name
self.age = age
student1 = Student('小明', 18)
student1.city = '武汉'
print('city: ', student1.city)
报错原因:因为__slots__属性里规定了,对象只可以存在 name 和 age 属性,所有自动增加的city 属性是不能增加到对象的属性中