0
假設我建立一個GUI修改Building
對象的集合屬性:使用字典的鍵來訪問類屬性
class Building:
def __init__(self, company, addr):
self.company = company
self.addr = addr
每當一個新的Building
在GUI中突出顯示,各種小部件應該更新反映該對象的屬性。
我想將每個Building屬性鏈接到控制它的小部件。也許這些方針的東西:
attribute_widget_map = {
'company': company_widget,
'addr': addr:widget,
}
,這樣,當我去設定每個插件的價值,我可以做到這一點是這樣的:這個
building = Building('XYZ', 'Anytown USA')
for attr, widget in attribute_widget_map.items():
widget.set_value(building.__getattr__(attr))
我的問題:我不喜歡這樣attribute_widget_map
中的鍵是Building
屬性的字符串表示。假設我將addr
更改爲address
。代碼將會中斷。有沒有其他方式可以做到這一點,而不是依靠__getattr__
?
有什麼替代方案?
無論哪種方式,如果你改變一個,你必須改變另一個。沒有? – idjaw
也許我的問題應該是:這是'__getattr__'的適當使用嗎? – Crispin
對我來說這似乎很好。當然,也許有人可能會來和別的什麼人說。但是,對我來說很好。 – idjaw