【发布时间】:2014-09-05 15:22:07
【问题描述】:
比较
class Results(object):
foo = 1
bar = 1
r = Results()
r.__dict__
Out[54]: {}
和
class Results(object):
def __init__(self):
self.foo = 1
self.bar = 1
r = Results()
r.__dict__
Out[57]: {'foo': 1, 'bar': 1}
我习惯于为主要包含属性的短类做第一种情况,因为它的逻辑更短。 r.foo 在这两种情况下都可以使用,但显然字典 getter 不会。
有人能简单解释一下以两种方式设置课程的区别吗?有没有一种简单的方法来协调第一类类,使.__dict__ 实际上会显示所有属性?
【问题讨论】:
-
一开始为什么要使用
__dict__? -
我想将对象属性保存在
pandas数据框中。 -
我会使用
vars()而不是__dict__,但这也只返回实例字典。下一个选项是循环dir(),然后使用getattr()访问属性。
标签: python class python-2.7 dictionary