python 动态给实例添加属性和方法并使用__slots__

Posted i勤能补拙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 动态给实例添加属性和方法并使用__slots__相关的知识,希望对你有一定的参考价值。

from types import MethodType

#创建一个空类
class Person(object):
__slots__ = ("name", "age", "speak")


per = Person()
#动态添加属性,这体现了动态语言的特点(灵活)
per.name = "tom"
print(per.name)
#动态添加方法
‘‘‘
def say(self):
print("my name is " + self.name)
per.speak = say
per.speak(per)
‘‘‘
def say(self):
print("my name is " + self.name)
per.speak = MethodType(say, per)
per.speak()




#思考:如果我们想要限制实例的属性怎么办?
#比如,只允许给对象添加name,age,height,weight属性


#解决:定义类的时候,定义一个特殊的属性(__slots__),可以限制动态添加的属性

per.height = 170
print(per.height)

以上是关于python 动态给实例添加属性和方法并使用__slots__的主要内容,如果未能解决你的问题,请参考以下文章

python3 - 动态添加属性以及方法

使用__slots__

Python面向对象高级编程(__slots__多继承定制类)-6

python-类和对象(属性方法)的动态绑定

Python实例属性限制(__slots__)

面向对象编程——实例属性和类属性