一,动态添加属性/方法
1,动态添加实例属性和实例方法
from types import MethodType
class Student:
pass
s = Student()
# 动态添加属性
s.name = 'Tom'
print(s.name)
print(s.__dict__)
# 定义一个函数作为实例方法
def set_age(self, age):
self.age = age
# 动态添加方法
s.set_age = MethodType(set_age, s)
s.set_age(4)
print(s.age)
print(s.__dict__)
运行结果:
Tom
{'name': 'Tom'}
4
{'name': 'Tom', 'set_age': <bound method set_age of <__main__.Student object at 0x101fd59a0>>, 'age': 4}
2,动态添加的实例属性和实例方法
只作用于当前实例本身
对于其他实例无效
class Student:
pass
tom = Student()
# 动态添加属性
tom.name = 'Tom'
print(tom.na