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
Libérer: 2024-11-28 09:01:15
original
286 Les gens l'ont consulté

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):
    ...
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal