2010-04-17 82 views
2

我在做Java編程,最近通過官方文檔開始學習Python。 我看到,我們可以動態地在Java中添加數據屬性的實例對象不同:Python中的屬性引用

class House: 
    pass 

my_house = House() 
my_house.number = 40 
my_house.rooms = 8 
my_house.garden = 1 

我的問題是,在什麼情況下使用該功能?與它在Java中完成的方式相比,有哪些優點和缺點?

回答

2

它也可以是在動態創建類使用;例如參見本教程:

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語法,但它們是相同的。

+0

有*所以很多更好的方式來滿足提問者的需求... – 2010-04-17 02:14:30

+0

是的;我的意圖是儘快發佈實際答案,並編輯更有用的答案。該教程比較好,但我仍然在尋找他詢問的確切語法的清晰實例。 – Personman 2010-04-17 02:18:34

+0

使用這種語法的個人經驗也可以。 – Jeune 2010-04-17 02:36:09

1

除非該對象被用作各種類型的東西,否則它通常不會從類的外部完成。當然,它在__init__()內完成了很多工作,爲將在其他地方使用的屬性提供值。

哦,speaking of Java...

+1

這是一個非常有用的視頻,也有點有趣! – Jeune 2010-04-17 02:33:11