python类中__dict__
属性返回的是实例对象中当前已经定义的所有自定义实例变量的名和值,为字典的形式
class Persion():
def __init__(self,par1,par2,par3,par4):
self.par1 = par1
self.par2 = par2
self.par3 = par3
self.par4 = par4
def female(self):
pass
def male(self):
pass
P = Persion("a","b","c","d")
print(P.__dict__)
print(Persion.__dict__)
P.__dict__={"par5":"e","par6":"f","par7":"g"}
print(P.__dict__)
P.__dict__["par5"]="E"
print(P.__dict__)
P.__dict__.update({'par6':"F", 'par7':"G"})
print(P.__dict__)
结果中,将类实例化后,P.__dict__
为类的属性,也就是类的变量
未实例化时Persion.__dict__
为类的属性,方法等
可以通过__dict__
来对类的变量进行更改,省去了self.var = var 这种形式
#结果
{'par1': 'a', 'par2': 'b', 'par3': 'c', 'par4': 'd'}
{'__module__': '__main__', '__init__': <function Persion.__init__ at 0x7fb9a76b4ae8>, 'female': <function Persion.female at 0x7fb9a76b4b70>, 'male': <function Persion.male at 0x7fb9a76b4c80>, '__dict__': <attribute '__dict__' of 'Persion' objects>, '__weakref__': <attribute '__weakref__' of 'Persion' objects>, '__doc__': None}
{'par5': 'e', 'par6': 'f', 'par7': 'g'}
{'par5': 'E', 'par6': 'f', 'par7': 'g'}
{'par5': 'E', 'par6': 'F', 'par7': 'G'}