Ich schrieb diesen Code, um auf ein Objekt über Benutzereingabe zuzugreifen. Es arbeitet mit Einheimischen (ich weiß, ich kann Wörterbuch machen)Wie erhält man zwei Eingaben und greift auf Objekte und Methoden einer Klasse zu?
class Dragon:
def __init__(self, head, legs):
self.head = head
self.legs = legs
def sum(self):
return self.head + self.legs
redfire = Dragon(2, 4)
dic1 = {"redfire": redfire}
input_object = input()
print(dic1[input_object].sum())
aber wenn ich versuche, das gleiche mit Methoden der Klasse zu tun:
class Dragon:
def __init__(self, head, legs):
self.head = head
self.legs = legs
def sum(self):
return self.head + self.legs
def mul(self):
return self.head * self.legs
redfire = Dragon(2, 4)
dic1 = {"redfire": redfire, "sum": Dragon.sum(self), "mul": Dragon.mul}
input_object = input()
input_method = input()
print(dic1[input_object].dic1[input_method])
Ich bekomme alle Arten von Fehler fragen mich, mein Wörterbuch zu ändern:
Traceback (most recent call last):
File "C:\Users\millw0rm\test.py", line 10, in <module>
dic1 = {"redfire": redfire, "sum": Dragon.sum(self), "mul": Dragon.mul}
NameError: name 'self' is not defined
Was kann ich einen gültigen Schlüssel für meine Methoden in meinem Wörterbuch definieren?
warum 'Dragon.sum'? Sie haben die 'redfire' -Instanz bereits erstellt, warum fügen Sie sie nicht dem Diktat hinzu? In diesem Fall wird "self" implizit übergeben. Oder füge 'Dragon hinzu.sum (redfire) 'was eine alberne Art ist, das ** genaue ** Gleiche zu tun. –
Möchten Sie 'getattr (dic1 [input_object], input_method)()'? – jonrsharpe
eigentlich habe ich keine Ahnung, was ich mit dieser Methode Teil in dictionary.look gemacht habe, stellen Sie sich vor, Sie haben mehrere Klassen mit mehreren Methoden in ihnen und Sie haben eine Reihe von Objekten, wie Sie ein Stück Code schreiben Benutzer nach einem gewünschten Objekt und eine Methode seiner Klasse, um eine Operation auf Attribute dieses Objekts durchzuführen. wie in diesem hier bekomme ich das objekt redfire und danach wollte ich methode sum von einem eingang bekommen um die operation zu machen. – Millw0