我在做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