Maison >développement back-end >Tutoriel Python >Les méthodes de classe peuvent-elles utiliser des propriétés en Python ?
Question :
Est-il possible d'utiliser la fonction property() en conjonction avec fonctions décorées avec la @classmethod décorateur ?
Réponse :
Python 3.8 et versions antérieures :
Pour Python 3.8 et versions antérieures, la solution recommandée est de créez la propriété sur la métaclasse plutôt que sur la classe, car les propriétés opèrent sur des instances et non sur des classes. Voici un exemple :
class Foo(object): _var = 5 class __metaclass__(type): # Python 2 syntax for metaclasses def var(cls): return cls._var def var(cls, value): cls._var = value # Python 3 syntax for metaclasses class Meta(type): ... class Foo(metaclass=Meta): ...
Python 3.9 et versions ultérieures :
À partir de Python 3.9, il est possible d'utiliser les décorateurs @classmethod et @property en combinaison. Voici un exemple :
class Foo(object): _var = 5 @classmethod @property def var(cls): return cls._var @var.setter def var(cls, value): cls._var = value
Dans cet exemple, les méthodes de propriété sont créées sur la classe elle-même.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!