我的Python自学之路

Python 学习笔记 042

2019-08-01  本文已影响21人  夜羽萧轩

本节内容 对象属性和类属性 


类属性 用类名来调用的属性 创建对象时会制作类属性的副本,将其做为对象属性保存调用

类属性通过类名来调用 ,也可以通过对象来调用

对象属性的优先级高于类属性

对象属性通过对象来调用 

二者同名使用 对象属性

对象属性       #只针对于当前对象生效,对于类创建的其他对象没有作用

动态的给对象添加对象属性 在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 

上一篇下一篇

猜你喜欢

热点阅读