第十四章[面向对象]:14.5:访问限制/属性

时间:2024-02-22 18:17:47

一,动态添加属性/方法

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