Heim  >  Artikel  >  Backend-Entwicklung  >  Wie greife ich dynamisch über die Zeichenfolgeneingabe in Python auf Klasseneigenschaften zu?

Wie greife ich dynamisch über die Zeichenfolgeneingabe in Python auf Klasseneigenschaften zu?

Linda Hamilton
Linda HamiltonOriginal
2024-10-23 08:42:02613Durchsuche

How to Access Class Properties Dynamically from String Input in Python?

Python: Zugriff auf Klasseneigenschaften über Strings

In Python kann es vorkommen, dass Sie auf Klasseneigenschaften über Strings zugreifen müssen. Beispielsweise könnten Sie eine Klasse wie diese haben:

<code class="python">class User:
    def __init__(self):
        self.data = []
        self.other_data = []

    def doSomething(self, source):
        # How to access self.other_data if source = 'other_data'?</code>

Sie möchten einen Zeichenfolgenwert für den Quellparameter in doSomething übergeben und auf das Klassenmitglied mit demselben Namen zugreifen.

Lösung:

Die ideale Lösung für dieses Problem ist die Verwendung der getattr-Funktion:

<code class="python">x = getattr(self, source)</code>

getattr benötigt zwei Argumente: das Objekt, auf dessen Eigenschaft Sie zugreifen möchten, und das Name der Eigenschaft als String. In Ihrem Fall würden Sie self als erstes Argument und source als zweites verwenden.

Dieser Ansatz funktioniert nahtlos, unabhängig davon, auf welches Attribut von self durch die Quellzeichenfolge verwiesen wird, einschließlich other_data in Ihrem Beispiel.

Das obige ist der detaillierte Inhalt vonWie greife ich dynamisch über die Zeichenfolgeneingabe in Python auf Klasseneigenschaften zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn