我在做Java編程,最近通過官方文檔開始學習Python。 我看到,我們可以動態地在Java中添加數據屬性的實例對象不同:Python中的屬性引用
class House:
pass
my_house = House()
my_house.number = 40
my_house.rooms = 8
my_house.garden = 1
我的問題是,在什麼情況下使用該功能?與它在Java中完成的方式相比,有哪些優點和缺點?
我在做Java編程,最近通過官方文檔開始學習Python。 我看到,我們可以動態地在Java中添加數據屬性的實例對象不同:Python中的屬性引用
class House:
pass
my_house = House()
my_house.number = 40
my_house.rooms = 8
my_house.garden = 1
我的問題是,在什麼情況下使用該功能?與它在Java中完成的方式相比,有哪些優點和缺點?
它也可以是在動態創建類使用;例如參見本教程:
http://onlamp.com/pub/a/python/2003/04/17/metaclasses.html?page=1
或這一項上混合插件,使用此功能,以提供更好的封裝和模塊,以面向對象的代碼編程技術:
http://www.linuxjournal.com/article/4540
第一個教程使用setattr(classname, "propertyname", value)
而不是classname.property = value
語法,但它們是相同的。
除非該對象被用作各種類型的東西,否則它通常不會從類的外部完成。當然,它在__init__()
內完成了很多工作,爲將在其他地方使用的屬性提供值。
這是一個非常有用的視頻,也有點有趣! – Jeune 2010-04-17 02:33:11
有*所以很多更好的方式來滿足提問者的需求... – 2010-04-17 02:14:30
是的;我的意圖是儘快發佈實際答案,並編輯更有用的答案。該教程比較好,但我仍然在尋找他詢問的確切語法的清晰實例。 – Personman 2010-04-17 02:18:34
使用這種語法的個人經驗也可以。 – Jeune 2010-04-17 02:36:09