Wie wäre es thing
in einem dict
speichern:
class Hi:
def __init__(self, bloop):
self.bloop = bloop
things = {'thing': Hi('bloop')}
name = input("Input a thing") # Let`s assume you input 'thing'
try:
print(things[name].bloop)
except KeyError:
print("Sorry, I dont know that thing :(")
Es gibt natürlich auch andere Möglichkeiten, um ein Attribut einer Klasse zu nennen. Sie könnten eine __call__()
Methode implementieren, die Sie die Klasseninstanz wie eine Funktion aufrufen können, und in Ihrem Fall Rückkehr .bloop
:
class Hi:
def __init__(self, bloop):
self.bloop = bloop
def __call__(self):
return self.bloop
things = {'thing': Hi('bloop')}
name = input("Input a thing") # Let`s assume you input 'thing'
try:
print(things[name]())
except KeyError:
print("Sorry, I dont know that thing :(")
Auf diese Weise können Sie Ihr Attribut später umbenennen oder ein anderes Attribut zurückzukehren (oder tun etwas völlig anderes zusammen), ohne .bloop
in Ihrer Hauptpython-Datei ersetzen zu müssen.
Eine dritte Möglichkeit, die calling attributes from[of] classes in Python
auf Ihre Frage Titel direkt betrifft: Sie können die @Property
Dekorateur verwenden, um Ihre .bloop
Attribut aufrufbar wie eine Funktion zu machen etwa so:
class Hi:
def __init__(self, bloop):
self.bloop = bloop
@Property
def bloop():
return self.bloop
@bloop.setter
def bloop(self, new_value)
self.bloop = new_value
things = {'thing': Hi('bloop')}
name = input("Input a thing") # Let`s assume you input 'thing'
try:
print(things[name].bloop())
except KeyError:
print("Sorry, I dont know that thing :(")
die Property
Dekorateur vollständig zu verstehen, I recommend this article .
Btw, nach dem tags
auf Ihre Frage, die Sie verwenden Python3.x
- Sie müssen nicht erklären, dass Ihre Klasse von Object
in Python3 erbt und später.
versucht, Gleichheitszeichen und Zitate zu korrigieren. Wenn etwas fehlt, können Sie es rückgängig machen. – Lafexlos