osdir.com


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Embedding classes' names


On 16/07/19 10:57 PM, Cameron Simpson wrote:
> On 16Jul2019 10:20, Chris Angelico <rosuav at gmail.com> wrote:
>> On Tue, Jul 16, 2019 at 10:17 AM DL Neil 
>> <PythonList at danceswithmice.info> wrote:
>>> When used, do you embed a class's name within its own code, as a 
>>> literal?
> [...]
>>> So, what about other situations where one might need to access the
>>> class's own name or that of its/a super-class? eg
>>>
>>> class C2(C1):
>>> ??????? def __init__(self, fred, barney ):
>>> ??????????????? super().__init__( fred )
>>> ??????????????? self.barney = barney
>>>
>>> ??????? def __repr__( self ):
>>> ??????????????? return f"C2( { self.fred }, { self.barney }"
>>> ??????????????? ### note: 'common practice' of "C2" embedded as constant
>>>
>>>
>>> How 'purist' do you go, cf YAGNI?
>>
>> In the case of __repr__, I would most definitely use
>> self.__class__.__name__, because that way, a subclass can leave repr
>> untouched and still get decent behaviour.
> 
> Yeah, me too, though I spell it "type(self).__name__" for no totally 
> rational reason.

+1
(looking through my code - perhaps at one time it was 'the old way'?)

-- 
Regards =dn