我是新来的Python,所以请原谅,如果我已经瞥见了一些简单的事情做到这一点。Python对象与@属性的字典
我有一个这样的对象:
class myObject(object):
def __init__(self):
self.attr1 = None
self.attr2 = None
@property
def prop1(self):
return foo.some_func(self.attr1)
而且我实例是这样的:
a = myObject()
a.attr1 = 'Apple'
a.attr2 = 'Banana'
而且方法这一切都包裹在预计字典的回报,所以我这样做:
return a.__dict__
但prop1
不包含在退货中。我明白这是为什么,它不在对象的__dict__
中,因为它只包含真实属性。
所以现在的问题是,怎样才能让我的收益率,这样的事情:
{'attr1': 'Apple', 'attr2': 'Banana', 'prop1': 'ModifiedApple'}
以外的回归做对前:
a.prop1_1 = a.prop1
为什么不在你的类中添加一个新的方法,该方法返回一个'self .__ dict__'的副本并添加了属性值? – 2015-04-01 14:27:59
@MartijnPieters这可能会解决这个特定情况,但不能解决查找任意对象的属性值的一般情况。 – 2015-04-01 14:49:26
@NickBailey:API经常使用属性,因为检索值可能会有些昂贵,并且计算值会被推迟,直到您真正需要它为止。如果你真的需要的话,你可以自动发现类中的所有“属性”对象,但是*一般情况下,如果你不知道它们用于什么,那么捅所有属性并不是一个好主意。 – 2015-04-01 14:51:11