本节内容 对象属性和类属性
类属性 用类名来调用的属性 创建对象时会制作类属性的副本,将其做为对象属性保存调用
类属性通过类名来调用 ,也可以通过对象来调用
对象属性的优先级高于类属性
对象属性通过对象来调用
二者同名使用 对象属性
对象属性 #只针对于当前对象生效,对于类创建的其他对象没有作用
动态的给对象添加对象属性 在init内添加 和在外部语句中添加
对象属性 只针对于当前对象生效,对于类创建的其他对象没有作用
#注意:以后千万不要讲对象属性与类属性重名,因为对象属性会屏蔽掉类属性。但是当删除对象属性后,在使用又能使用类属性了。
尽可能少写类属性
动态给实例添加属性和方法并调用
动态添加属性 这体现了动态语言的特点(灵活)
动态添加方法 给对象添加属性
from types import MethodType
def say(self):
print("my name is " + self.name)
per.speak = MethodType(say, per)
per.speak()
思考:如果我们想要限制实例的属性怎么办? 控制动态添加属性
#比如,只允许给对象添加name,age,height,weight属性
解决:定义类的时候,定义一个特殊的属性(__slots__),可以限制动态添加的属性
class Person(object):
__slots__ = ("name", "age", "speak")
创建类的时候添加 __slots__ 后面为元组
下节预告 通过@property正常访问对受限制访问的对象 pass
2019年7月31日21:43:53