class Animal():
__slots__ = ('name', 'age') # 只限制当前Animal类的实例对象,不限制子类的对象
class Cat(Animal):
pass
Dog = Animal()
Dog.name = 'Jakey'
Dog.age = 2
print(Dog.name, Dog.age)
cat1 = Cat()
cat1.gender = 'male' # Animal子类Cat的实例对象cat1 可添加出'name', 'age'之外的其他的属性
print(cat1.gender)
Dog.gender = 'male' # Animal 类的实例对象不能添加除'name', 'age'之外的其他的属性, 运行结果报错
运行结果:
Jakey 2
male
Traceback (most recent call last):
File "/home/python/Desktop/test/13_ __slots__变量.py", line 18, in <module>
Dog.gender = 'male' # Animal 类的实例对象不能添加除'name', 'age'之外的其他的属性, 运行结果报错
AttributeError: 'Animal' object has no attribute 'gender'