On Sat, Dec 21, 2013 at 08:41:17AM -0500, eryksun wrote: > On Sat, Dec 21, 2013 at 2:14 AM, Steven D'Aprano <st...@pearwood.info> wrote: > > > > (Sometimes, people will call them "members", especially if they are used > > to C#. The meaning here is member as in an arm or leg, as in > > "dismember", not member in the sense of belonging to a group.) > > A Python object isn't just a fixed-size block of data with members at > fixed offsets. It stores its data dynamically in a dict.
Yes, but that's just an implementation detail. There's no fundamental difference between "attribute", "member" and "(instance/class) variable". Different languages give them different names according to whatever vagaries the language creator considers important. C# happens to use fixed-sized records, Python happens to (usually) use dicts. Having said that, I do think it is useful to reserve the term "member" for the fixed-size block type, and "attribute" for the general term. At least when talking about Python. [...] > For example, the read-only __base__ attribute of a class uses the > following descriptor: > > >>> vars(type)['__base__'] > <member '__base__' of 'type' objects> Oooh, nice! I always forget about vars(), and end up messing about with __dict__. > > Suppose we ask Python for "polly.colour". Python looks at the instance > > polly, and checks to see if it has an instance attribute called "polly". [...] > It first has to check Parrot and its base classes (in Method > Resolution Order, i.e. Parrot.__mro__) for a data descriptor (e.g. a > property) named "colour". An instance can't override a data > descriptor. I did say it was an over-simplified description. I didn't think it was helpful to start talking about descriptors to a beginner :-) For what it's worth, descriptors are both absolutely fundamental to how Python operates, and an advanced feature that newbies don't need to understand immediately, -- Steven _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor