请注意,Python 2.7中的最佳实践是使用新型类(Python 3不需要),即
class Foo(object):
...
同样,“对象”和“类”之间也存在差异。要从任意对象构建字典,只需使用即可__dict__
。通常,您将在类级别声明方法,并在实例级别声明属性,因此__dict__
应该没问题。例如:
>>> class A(object):
... def __init__(self):
... self.b = 1
... self.c = 2
... def do_nothing(self):
... pass
...
>>> a = A()
>>> a.__dict__
{'c': 2, 'b': 1}
更好的方法(由robert建议在注释中使用)是内置vars函数:
>>> vars(a)
{'c': 2, 'b': 1}
另外,根据您要执行的操作,最好继承自dict。那么您的课程已经是字典,并且如果您愿意,可以覆盖getattr和/或setattr调用并设置字典。例如:
class Foo(dict):
def __init__(self):
pass
def __getattr__(self, attr):
return self[attr]
# etc...