Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich Getter und Setter mithilfe des „property()'-Dekorators pythonisch implementieren?

Wie kann ich Getter und Setter mithilfe des „property()'-Dekorators pythonisch implementieren?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-24 02:00:14692Durchsuche

How Can I Pythonically Implement Getters and Setters Using the `property()` Decorator?

Pythonischer Ansatz für Getter und Setter

In Python gibt es verschiedene Möglichkeiten, Getter und Setter für Objektattribute zu implementieren. Unter den genannten Ansätzen umfasst eine Pythonic-Lösung die Nutzung des in Python integrierten property()-Decorators.

Mit dem property()-Decorator können Sie eine Eigenschaftsmethode erstellen, die verhält sich wie ein Attribut, kann aber zusätzliches Verhalten haben, wie z. B. Eingabevalidierung oder Caching. Hier ist ein Beispiel:

class C(object):
    def __init__(self):
        self._x = None

    @property
    def x(self):
        """I'm the 'x' property."""
        print("getter of x called")
        return self._x

    @x.setter
    def x(self, value):
        print("setter of x called")
        self._x = value

    @x.deleter
    def x(self):
        print("deleter of x called")
        del self._x

In diesem Beispiel:

  • Die Methode __init__() initialisiert das _x-Attribut als None.
  • Die x-Eigenschaft definiert den Getter Methode, die „Getter von x aufgerufen“ ausgibt, bevor der Wert von _x zurückgegeben wird.
  • Die Der x.setter-Teil definiert die Setter-Methode, die „Setter von x aufgerufen“ ausgibt, bevor der Wert von _x festgelegt wird.
  • Der x.deleter-Teil definiert die Löschmethode, die vor dem Löschen „Deleter von x aufgerufen“ ausgibt das _x-Attribut.

Um die x-Eigenschaft zu verwenden, greifen Sie einfach wie eine normale Eigenschaft darauf zu Attribut:

c = C()
c.x = 'foo'  # setter called
foo = c.x    # getter called
del c.x      # deleter called

Dieser Ansatz bietet eine saubere und erweiterbare Möglichkeit, Getter und Setter unter Einhaltung der Pythonic-Konventionen zu implementieren.

Das obige ist der detaillierte Inhalt vonWie kann ich Getter und Setter mithilfe des „property()'-Dekorators pythonisch implementieren?. 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