2010-04-17 58 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