[PYTHON] Combinez les accesseurs en une seule méthode

Lors de la définition correcte des accesseurs de propriété en Python, il est courant d'écrire comme suit en utilisant la fonction property. Par exemple, si vous voulez attacher la propriété bar à la classe Foo.

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")

Cependant, avec cette méthode d'écriture, il est nécessaire de créer jusqu'à trois méthodes pour une propriété, ce qui est déroutant.

Dans un tel cas, il est également possible de l'écrire collectivement comme suit. Le haut et le bas ont la même signification.

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())

Peut être omis si vous n'avez pas besoin de fdel () ou doc.

C'est un peu plus facile à voir car une méthode avec le même nom est regroupée pour une propriété ... Je pense.

Recommended Posts

Combinez les accesseurs en une seule méthode
Combinez les arguments de la fonction python en une seule variable
Combinez plusieurs fichiers python en un seul fichier python
[Python & Unix] Combinez plusieurs fichiers PDF en un seul.
Combinez plusieurs fichiers Excel chargés à l'aide de pandas en un seul