newb question about @property

bartc bc at freeuk.com
Thu Oct 5 07:51:03 EDT 2017


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




More information about the Python-list mailing list