Python There are some magical ways to do it , They are always surrounded by double underscores , They are object-oriented Of Python Everything . They are special ways to add magic to your classes , If your object implements ( heavy load ) A magic method , Then this method will be automatically used in special cases Python The call .
function
This method defines when a property is set ( Create or modify ) The behavior of time
Parameters
self Represents the object itself ;key Is a string , Represents the name of the attribute ;value Represents the value of the attribute .
Return value
nothing
Example
class MyTest:
def __setattr__(self, key, value):
self.__dict__[key] = value
sample = MyTest()
sample.age = 10
print(sample.__dict__)
The behavior when a property is set When assigning values to each property of a class instance , Will be called first __setattr__()
Method , And in __setattr__()
Method to add the property name and property value to the class instance __dict__
Properties of the . The following example :
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)
Execution results :
{}
{'name': 'kitty'}
{'name': 'kitty', 'age': 20}
Example , Although not overloaded __setattr__()
Method , But in calling __init__()
Method to assign a value to an attribute __dict__
Insert... In turn key and value.