2016-05-12 15 views
0

Ich habe eine Klasse, die erbt die str:Vererbung von unveränderlichen Typ, Attribut Zugriff

class UpperStr(str): 

    def __new__(cls, value, font_size=12): 
     print 'In redefined new...' 
     return str.__new__(cls, value.upper()) 

    def __init__(self, value, font_size=12): 
     print 'In init...' 
     self.font_size = font_size 

Dann kann ich ein Attribut Zugriff in abgeleiteten Klasse definiert:

s = UpperStr('hello') 
print s.font_size 

Aber da gibt es keine Möglichkeit zu Holen Sie eine Instanz der Basisklasse aus der Instanz der abgeleiteten Klasse in Python, wie kann ich den Wert von str selbst ('hello' in diesem Fall) bekommen?

+0

's' oder' self' ist '' hallo'' hier. 's' ist im Grunde eine Instanz von' str'. –

+0

, aber die Vererbung in Python setzt voraus, dass Ihre abgeleitete Klasse dieselben Attribute und Methoden wie die in der abgeleiteten Klasse selbst definierten + Methoden und Attribute hat. 's' ist keine Instanz von' str' in diesem Sinne. Was ist die logische Erklärung? – user3880400

+0

'isinstance (s, str)' ... sieht aus wie 's' ist ein' str' für mich! – kindall

Antwort

1

Verwenden Sie self, um auf die Zeichenfolge selbst zu verweisen.

Verwandte Themen