Maison >développement back-end >Tutoriel Python >Les méthodes de classe peuvent-elles utiliser des propriétés en Python ?

Les méthodes de classe peuvent-elles utiliser des propriétés en Python ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-28 09:01:15283parcourir

Can Class Methods Use Properties in Python?

Utilisation de propriétés avec des méthodes de classe

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn