Python用一个对象来生成一个字典dict:属性和值设置为键值对?

问题:

你知道是否有一个内置函数从任意对象构建一个字典?我想做这样的事情:

>>> class Foo:
...     bar = 'hello'
...     baz = 'world'
...
>>> f = Foo()
>>> props(f)
{ 'bar' : 'hello', 'baz' : 'world' }

注意:它不应该包含方法。只有字段。

回答:

请注意,当前Python版本中的最佳做法是使用new-style类,即

class Foo(object):
...

此外,“对象”和“类”之间存在差异。要从任意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}

或者,根据你想做什么,继承dict可能很好。那么你的类是already一个字典,如果你想要你可以覆盖getattr和/或setattr来调用并设置dict。例如:

 class Foo(dict):
     def __init__(self):
         pass
     def __getattr__(self, attr):
         return self[attr]

     # etc...

翻译整理: codewenda.com
英文原文:Python dictionary from an object’s fields

发表评论

电子邮件地址不会被公开。 必填项已用*标注

18 + = 23