Ich versuche, eine Klasse zu erstellen, die Objekte mit verschiedenen Methoden basierend auf einer Eingabe erstellen wird. Der Sinn dahinter ist, bei jedem Aufruf der Methode die Verwendung einer if-Anweisung zu vermeiden.defining Methode der Klasse in if-Anweisung
Unten ist der Code, dachte ich würde funktionieren, aber funktioniert nicht.
class Food:
def __init__(self,food_type):
self.food_type = food_type
if food_type == 'cookie':
print 'this is a cookie'
def is_awesome(self):
print "is awesome"
else:
print 'this is not a cookie'
def is_awesome(self):
print "not awesome"
Oreo = Food('cookie')
Oreo.is_awesome()
Der Code funktioniert nicht Fehler auf der def is_awesome(self)
Aussage, sondern die Oreo.is_awesome()
Linie wirft den Fehler:
„Attribute: Essen Instanz hat kein Attribut is_awesome“.
Gibt es eine bessere Möglichkeit, Objekte mit unterschiedlichen Methoden zu erstellen? und gibt es einen Grund, warum die Methode is_awesome
nicht von 'Oreo.is_awesome' aufrufbar ist?
Im '' __init__, könnten Sie tun, nur 'self.is_awesome = food_type == "Cookie"'. Das heißt, wenn Sie einen booleschen Wert wünschen, keine Zeichenfolge –