python中的变量

class A:
    def __init__(self):        self.a = 1ev = A()
ev.b = 2print ev.b

ev.b不存在类里面,请问为什么还可以这样写?请问这在python里面叫做什么呢?


料青山看我应如是
浏览 562回答 2
2回答

智慧大石

python魔法函数貌似因为在执行ev.b = 2 的时候调用了__setattr__(),然後把b:2 存进 a.__dict__里面去了。然后可以调用a.__dict__ 可以看到一个字典里面存储了a的属性。可以去搜索__setattr__ 了解它。下面给个例子:class A:def __init__(self):    self.a=1def __setattr__(self,name,value):    self.__dict__[name]=value*2a=A()a.b=6print(a.__dict__)输出{“a”=2,“b”=12}对了在补充点,其实self.a=1 跟后面 a.b=6 是一样的操作。因为实例化的时候先new了实例,也就是后面的self或者a。 然后才__init__初始化。所以问为什么可以a.b=value这样,是对python类的实例化的误解

慕妹3242003

Python 动态语言
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python