(第七篇)__setattr__、__geattr__、__delattr__、__getattribute__(对象属性访问)

发布时间 2023-04-07 12:43:03作者: hechengQAQ

摘要:在对象的创建和使用期间自动调用。这些特殊方法可以用于实现类似于属性访问、属性删除、属性赋值和属性访问前的特殊行为。

一、__setattr__

用于在属性赋值时被自动调用,并将该属性名和属性值存储在实例字典中。该方法可以用来检查属性值的合法性,也可以用来实现属性赋值时的复杂逻辑

class MyClass:
    def __setattr__(self, name, value):
        print(f"Setting {name} to {value}")
        # 可写一些规范属性等其他逻辑 
        super().__setattr__(name, value)  # 我们使用super()方法调用父类的__setattr__方法,以便在实例字典中存储属性

obj = MyClass()
obj.x = 5

"""
执行结果:
Setting x to 5
"""

二、__getattr__

持续更新中。。。。。。