我是新來的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