Ich möchte öfters mal Klassen wie einfache Funktionen benutzen...
Dazu dachte ich, liefert mir __repr__ das Ergebniss zurück, da ja leider __init__ kein Ergebniss zurück liefern kann...
Mit __repr__ scheint es auch zu funktionieren, aber als ich zwei Aufrufe hintereinander Ausführen wollte, ist mir Aufgefallen, das __repr__ nicht einen String, sondern eine Instanz zurückliefert

Hier mal ein Beispiel:
Code: Alles auswählen
class test1:
def __init__(self, text):
self.text=text
def __repr__(self):
return self.text+" test1"
class test2:
def __init__(self, text):
self.text=text
def __repr__(self):
return self.text+" & test2"
text=test1("Hello World:")
print type(text),":",text
text=test2(text)
print type(text),":",text
Code: Alles auswählen
<type 'instance'> : Hello World: test1
<type 'instance'> : Traceback (most recent call last):
File "testtemp.py", line 50, in ?
print type(text),":",text
File "testtemp.py", line 44, in __repr__
return self.text+" & test2"
TypeError: unsupported operand type(s) for +: 'instance' and 'str'
Schade...
Eine Lösung ist es in der Klasse eine "get"-Funktion einzubauen... Das funktioniert auch:
Code: Alles auswählen
class test1:
def __init__(self, text):
self.text=text
def get(self):
return self.text+" test1"
class test2:
def __init__(self, text):
self.text=text
def get(self):
return self.text+" & test2"
text=test1("Hello World:").get()
print type(text),":",text
text=test2(text).get()
print type(text),":",text
Code: Alles auswählen
<type 'str'> : Hello World: test1
<type 'str'> : Hello World: test1 & test2
Der Nachteil bei der zweiten Variante ist aber, das man halt den Aufruf mit .get() ergänzen muß...
Gibt es einen einfacheren Weg?