为了账号安全,请及时绑定邮箱和手机立即绑定

python中的变量

python中的变量

料青山看我应如是 2019-03-23 11:47:02
class A:     def __init__(self):        self.a = 1ev = A() ev.b = 2print ev.bev.b不存在类里面,请问为什么还可以这样写?请问这在python里面叫做什么呢?
查看完整描述

2 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

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*2

a=A()
a.b=6
print(a.__dict__)

输出{“a”=2,“b”=12}

对了在补充点,其实self.a=1 
跟后面 a.b=6 是一样的操作。
因为实例化的时候先new了实例,也就是后面的self或者a。 然后才__init__初始化。
所以问为什么可以a.b=value这样,是对python类的实例化的误解


查看完整回答
反对 回复 2019-03-23
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

Python 动态语言

查看完整回答
反对 回复 2019-03-23
  • 2 回答
  • 0 关注
  • 561 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信