On 05/10/2017 12:29, Gregory Ewing wrote:
bartc wrote:
Result? You can't just look at my 'any' class and see what fields it
uses. You can't even just look at the static source code. You have to
run the program to find out. And it might be different each time.
You can usually get a pretty good idea of what attributes a
class has by looking at its definition. The vast majority of
classes will either initialise their attributes in the __init__
method or provide defaults as class variables.
While in theory it's possible for code to add attributes
later after initialisation, in practice this is hardly ever
done.
Yeah, but, like many other things in this language, there are million
ways of doing it.
Just had a quick look, the first hit was talking about using a module
'pyrecord'.
Another mentioned 'namedtuples'.
Another used the '__slots__' method already mentioned (remembering the
difference between old and new classes in Python 2...)
One more uses a module 'recordtype'.
And then there is just using a normal class, where you have to look
closely at the code to see what it's implementing. It allow ad-hoc
fields to be created, or it may define __init__ etc.
And all with different capabilities regarding adding extra fields,
having mutable records, initialising a record, comparing them, printing
them, ....
Am I allowed to say that it all seems a bit of a mess?
--
bartc
--
https://mail.python.org/mailman/listinfo/python-list