In dem Bemühen um eine Strecke von Code aufzuräumen ich so etwas wie dies versuchte:Namespace aus dem Wörterbuch auffüllen?
class ClassDirection():
def __init__(self):
pass
def downward(self, x):
print (x)
def upward(self, x):
print (X +1)
def sideways(self, x):
print (x // 2)
directions = []
mustard = ClassDirection()
dicty = {downward:5, upward:7, sideways:9}
for a,b in dicty.items():
direction = mustard.a(b)
directions.append(direction)
Sehen als das Wort „nach unten“ von Python verstanden wird als ein Name, der nicht definiert ist, ausgeführt ist es natürlich nicht Geben Sie mir den Fehler:
NameError: name 'downward' is not defined
Ich habe 2 Fragen dazu. A) Gibt es eine Möglichkeit, einen undefinierten "Namen" in einem Wörterbuch zu speichern, ohne ihn als String zu speichern und dann mit einem verrückten Hack neu zu formatieren? B) Ist es überhaupt möglich, einen Teil eines Namensraums so zu "injizieren"?
Sicher, speichern Sie einfach Zeichenfolgen und verwenden Sie 'getattr()'. Oder speichern Sie die gebundenen Methoden. 'senf.downwards' ist ein Objekt, das Sie in ein Wörterbuch einfügen und später aufrufen können. –
Danke! Getattr ist die Art von Ding, die ich gesucht habe und ich habe viel gelernt, indem ich auf seine Beispiele schaue. Übrigens, ich erkenne, dass der zugrundeliegende Mechanismus in meiner Frage ein Duplikat sein kann, aber der Weg, ihn zu finden, könnte nicht sein. Tatsächlich habe ich ziemlich viel Zeit damit verbracht, hier und im Allgemeinen über Google zu suchen, bevor ich meine Frage gestellt habe. Das Problem war "wie beschreibe ich, wonach ich suche". "Wie kann auf Klasseneigenschaften in Python dynamisch zugegriffen werden?" ist überhaupt nicht, wie ich die Frage betrachtete. – chmedly