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

Reply via email to