Python中的属性引用

时间:2010-04-17 02:00:02

标签: python oop

我做Java编程,最近开始通过官方文档学习Python。 我发现我们可以动态地将数据属性添加到实例对象,这与Java不同:

class House:
  pass

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

我的问题是,在什么情况下使用此功能?与在Java中完成的方式相比有哪些优缺点?

2 个答案:

答案 0 :(得分:2)

它也可以在动态创建类时使用;例如,参见本教程:

http://onlamp.com/pub/a/python/2003/04/17/metaclasses.html?page=1

或关于Mix-ins的这一项,这是一种编程技术,它使用此功能为面向对象的代码提供更好的封装和模块化:

http://www.linuxjournal.com/article/4540

第一个教程使用setattr(classname, "propertyname", value)而不是classname.property = value语法,但它们是相同的。

答案 1 :(得分:1)

除非将对象用作各种类型的对象,否则通常不会从类外部进行。当然,__init__()内部已经完成了很多工作,为将在其他地方使用的属性提供值。

哦,speaking of Java...