python – __dict__不知道类的某些属性
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – __dict__不知道类的某些属性,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1459字,纯文字阅读大概需要3分钟。
内容图文
![python – __dict__不知道类的某些属性](/upload/InfoBanner/zyjiaocheng/811/55975642fc434645bacfbd1280ecbcad.jpg)
参见英文答案 > Python class instance __dict__ doesn’t contain all instance variables. Why? 3个
如果我上课
class MyClass:
"""A simple example class"""
i = 12345
def f(self):
return 'hello world'
然后在控制台中说
x=MyClass()
x.counter = 1
vars(x) # returns {'counter': 1}
x.__dict__ # returns {'counter': 1}
为什么不知道x的i属性?我确信这是因为我对我在Python中如何定义类的各种属性的误解.
在这方面,Python 2/3之间有什么区别吗?调用dir(x)给了我所有我期望的东西.
我怀疑其他初学者已经问过这个问题,但在这个阶段我不知道在问题标题中寻找正确的事情.网站建议的所有内容都不正确.
解决方法:
我被定义为类的属性,而不是实例.您将看到只存在MyClass.i的一个版本,它在MyClass的所有实例之间共享:
In [133]: x = MyClass()
In [134]: y = MyClass()
In [135]: x.i, y.i, MyClass.i
Out[135]: (12345, 12345, 12345)
In [136]: MyClass.i = 54321
In [137]: x.i, y.i, MyClass.i
Out[137]: (54321, 54321, 54321)
你也会发现我很好地坐在MyClass里面.__ dict__:
In [138]: vars(MyClass)
Out[138]:
mappingproxy({'__dict__': <attribute '__dict__' of 'MyClass' objects>,
'__doc__': 'A simple example class',
'__module__': '__main__',
'__weakref__': <attribute '__weakref__' of 'MyClass' objects>,
'f': <function __main__.MyClass.f>,
'i': 54321}) # <------
请注意,类属性的另一个有趣特性是它们不与实例属性冲突:
In [148]: class MyClass:
...: i = 12345
...: def __init__(self):
...: self.i = 54321
...:
In [149]: x = MyClass()
In [150]: MyClass.i, x.i
Out[150]: (12345, 54321)
内容总结
以上是互联网集市为您收集整理的python – __dict__不知道类的某些属性全部内容,希望文章能够帮你解决python – __dict__不知道类的某些属性所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。