explicit call to __init__(self) in subclass needed?

Ethan Furman ethan at stoneleaf.us
Fri Sep 18 15:26:31 CEST 2009


Bruno Desthuilliers wrote:
> Ethan Furman a écrit :
> 
>> Andrew MacKeith wrote:
>>
>>> I create a class like this in Python-2.6
>>>
>>>  >>> class Y(str):
>>> ...   def __init__(self, s):
>>> ...      pass
>>> ...
>>>  >>> y = Y('giraffe')
>>>  >>> y
>>> 'giraffe'
>>>  >>>
>>>
>>> How does the base class (str) get initialized with the value passed 
>>> to Y.__init__() ?
>>>
>>> Is this behavior specific to the str type, or do base classes not 
>>> need to be explicitly initialized?
>>>
>>> Andrew
>>
>>
>> All the immutable base types (I *think*), use __new__ for object 
>> creation, not __init__.
> 
> 
> All types use __new__ for object *creation*. __init__ is for object 
> initialization (which indeed happens in the __new__ method for immutable 
> types, since the initializer works my mutating the newly created 
> instance) !-)
> 
>> ~Ethan~

Thanks for the clarification, Bruno!

~Ethan~




More information about the Python-list mailing list