[PYTHON] Kombinieren Sie Accessoren zu einer Methode

Wenn Sie Eigenschafts-Accessoren in Python richtig einstellen, wird häufig wie folgt mit der Funktion "Eigenschaft" geschrieben. Zum Beispiel, wenn Sie die Eigenschaft "bar" an die Klasse "Foo" anhängen möchten.

class Foo(object):
    def __get_bar(self):
        return self.__bar

    def __set_bar(self, value):
            self.__bar = value

    def __del_bar(self):
            del self.__bar

    bar = property(__get_bar, __set_bar, __del_bar,
                   doc="short explanation for bar property")

Bei dieser Schreibmethode müssen jedoch bis zu drei Methoden für eine Eigenschaft erstellt werden, was verwirrend ist.

In einem solchen Fall ist es auch möglich, dies wie folgt zusammen zu schreiben. Oben und unten haben die gleiche Bedeutung.

class Foo(object):
    def bar():
        doc = "short explanation for bar property"

        def fget(self):
            return self.__bar

        def fset(self, value):
            self.__bar = value

        def fdel(self):
            del self.__bar

        return locals()

    bar = property(**bar())

Kann weggelassen werden, wenn Sie nicht "fdel ()" oder "doc" benötigen.

Es ist etwas einfacher zu sehen, weil eine Methode mit demselben Namen für eine Eigenschaft gruppiert ist ... Ich fühle.

Recommended Posts

Kombinieren Sie Accessoren zu einer Methode
Kombinieren Sie Python-Funktionsargumente zu einer einzigen Variablen
Kombinieren Sie mehrere Python-Dateien zu einer Python-Datei
[Python & Unix] Kombinieren Sie mehrere PDF-Dateien zu einer.
Kombinieren Sie mehrere mit Pandas geladene Excel-Dateien zu einer