Python 的對象天生擁有一些神奇的方法,它們總被雙下劃線所包圍,它們是面向對象的 Python 的一切。它們是可以給你的類增加魔力的特殊方法,如果你的對象實現(重載)了某一個魔法方法,那麼這個方法就會在特殊的情況下自動被 Python 所調用。
功能
該方法定義當一個屬性被設置(創建或修改)時的行為
參數
self 代表對象本身;key是一個字符串,代表屬性的名字;value代表屬性的值.
返回值
無
示例
class MyTest:
def __setattr__(self, key, value):
self.__dict__[key] = value
sample = MyTest()
sample.age = 10
print(sample.__dict__)
當一個屬性被設置時的行為 在類實例的每個屬性進行賦值時,都會首先調用 __setattr__()
方法,並在 __setattr__()
方法中將屬性名和屬性值添加到類實例的 __dict__
屬性中。如下示例:
class Animal(object):
def __init__(self, name, age):
print(self.__dict__)
self.name = name
print(self.__dict__)
self.age = age
print(self.__dict__)
dog = Animal('kitty', 20)
執行結果:
{}
{'name': 'kitty'}
{'name': 'kitty', 'age': 20}
示例中,雖然沒有重載 __setattr__()
方法,但是在調用 __init__()
方法對屬性賦值時__dict__
中依次插入 key 和 value。
abnormal : reason :