[Python-de] Unterklassen von eingebauten Typen definieren

Gregor Lingl glingl at aon.at
Sun Sep 29 21:23:58 EDT 2002


Gerhard Häring schrieb:

>* Gregor Lingl <glingl at aon.at> [2002-09-29 18:50 +0200]:
>  
>
>>Hallo pythonistas!
>>
>>Ich möchte gerne folgendes wissen:
>>
>>Ich leite eine Klasse in folgender Weise vom eingebauten Typ list ab:
>>    
>>
>
>Die Dokumentation dafür sehr spärlich ist: </yoda>
>http://www.python.org/2.2.1/descrintro.html
>
>  
>
>>>>>class L(list):
>>>>>          
>>>>>
>>   pass
>>
>>    
>>
>>>>>a = L()
>>>>>a
>>>>>          
>>>>>
>>[]
>>    
>>
>>>>>b = L([1,2,3])
>>>>>b
>>>>>          
>>>>>
>>[1, 2, 3]
>>    
>>
>>>>>c = L("xyz")
>>>>>c
>>>>>          
>>>>>
>>['x', 'y', 'z']
>>    
>>
>>L scheint list als Konstruktor zu benützen, oder
>>es verhält sich wenigstens so als ob.
>>
>>Nächstes Beispiel:
>>
>>    
>>
>>>>>class M(list):
>>>>>          
>>>>>
>>   def __init__(self, x):
>>       self.x = x
>>    
>>
>
>Du hast vergessen, dass du noch den Konstruktor der Oberklasse aufrufen
>musst: list.__init__(self, x)
>
>Hier ein kleines Beispiel:
>
>class M(list):
>    def __init__(self, initparm, doUpperCase=0):
>        if doUpperCase:
>            initparm = [x.upper() for x in initparm]
>        list.__init__(self, initparm)
>
>m = M(("a", "A", "b"), 1)
>print m
>
>-- Gerhard
>

Danke! - Vergessen? Na ja, mir war nicht klar, dass die eingebauten 
Typen auch eine
__init__-Methode haben. (Und um eine leere abgeleitete Liste zu 
erhalten, muss dieser
Konstruktor offenbar auch nicht aufgerufen werden, die gibts anscheinend 
automatisch.)

Gregor







More information about the Python-de mailing list