[Python-Dev] Issue10403 - using 'attributes' instead of members in documentation
Michael Foord
fuzzyman at voidspace.org.uk
Tue Jun 28 14:56:40 CEST 2011
On 28/06/2011 13:31, Nick Coghlan wrote:
> On Tue, Jun 28, 2011 at 8:54 PM, Michael Foord
> <fuzzyman at voidspace.org.uk> wrote:
>> The problem with "data attributes" is that it doesn't mean *anything*, which
>> I suppose is useful for invented terminology, but it means it doesn't convey
>> anything precise to those who haven't heard the term before. If it becomes
>> widely used then that changes I guess. I'd still normally just use
>> "attributes" though...
> In this context, precision is an illusion. There is *no* precise
> terminology,
"instance members" is precise, (whether or not an attribute is fetched
"from the instance" is one thing that is clear in the python data model
- there are just lots of other ways of fetching attributes too).
"instance members" just doesn't cover all the cases where you may want
to group attributes together though.
However, providing "__getattr__" and "__getattribute__" is not the
common case and even properties are *usually* backed by a real instance
attribute. So "instance attributes" as opposed to other types of
attributes is *often* a useful distinction.
I don't think "data attributes" is clear or precise. Is a property a
data attribute (well it depends how it is implemented and what it does),
is a staticmethod a data attribute (no - but then Tres' question - it
isn't a normal method either so if you define data attribute to mean
"all non method attributes" then its potentially an open question).
All the best,
Michael Foord
> not only because Python blurs the boundaries by design in
> many respects (callable or not, method or not, attribute or not, etc),
> but also because *people* use the same words to mean slightly
> different things.
>
> The best we can hope for is to encourage the right way of thinking
> about the situation, and in that regard you have the complete set of
> attributes accessible via an object (i.e. via __getattribute__), some
> of which are callables (and may or may not act like instance methods)
> and the remainder of which are data attributes (some of which may
> incidentally be callable, even if they aren't used that way). How a
> *particular* attribute is classified is not an inherent property of
> the attribute, but also an artifact of the way it is used by the
> application.
>
> Cheers,
> Nick.
>
--
http://www.voidspace.org.uk/
May you do good and not evil
May you find forgiveness for yourself and forgive others
May you share freely, never taking more than you give.
-- the sqlite blessing http://www.sqlite.org/different.html
More information about the Python-Dev
mailing list