类属性和对象属性在前面的几节课中都讲解过了,这一节课我们在来讲一下类属性和对象属性的区别和一些功能设置。老规矩,先创建一个类和实例化一个对象。
class Person: # 类属性属于只读属性
age = 18
name = 'Tom'
person = Person() # 对象属性可变
person.age = 22
person.name = 'jerry'
1.类属性和对象属性的区别
# 验证对象属性可变
print(person.__dict__) # {'age': 22, 'name': 'jerry'}
person.__dict__ = {'age': 22, 'name': 'jerry', 'top': 180} # 直接从属性字典中来修改或者增加属性
print(person.top) # 180
# 验证对象属性只读
print(Person.__dict__)
Person.__dict__ = {'age': 18, 'name': 'Tom', 'top': 190}
print(Person.top) # AttributeError: attribute '__dict__' of 'type' objects is not writable:类属性不可写入
Person.__dict__['age'] = 190 # TypeError: 'mappingproxy' object does not support item assignment:也是不支持元素赋值
2.类属性被所有对象共享
class Man:
age = 19
name = '小明'
man1 = Man()
print(man1.age)
man1.age = 20
man2 = Man()
print(man2.age)
3.对象属性限制添加功能
class Woman:
__slots__ = ['age', 'name'] # 限制对象中只能添加这两个对象属性
pass