开发者

Attribute References in Python

I do Java programming and recently started learning Python via the official documentation. I see that we can dynamically add data attributes to an instance object unlike in Java:

class House:
  pass

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

My question is, in what situ开发者_如何转开发ations is this feature used? What are the advantages and disadvantages compared to the way it is done in Java?


It can also be used when dynamically creating classes; see for instance this tutorial:

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

or this one on Mix-ins, a programming technique that uses this capability to provide better encapsulation and modularity to object oriented code:

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

The first tutorial uses setattr(classname, "propertyname", value) instead of the classname.property = value syntax, but they are the same.


It's not often done from outside of the class unless the object is being used as a bucket of sorts. It's done an awful lot inside __init__() of course, to provide values to attributes that will be used elsewhere.

Oh, and speaking of Java...

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜