Maison > développement back-end > Tutoriel Python > Décrire les attributs de la classe Python

Décrire les attributs de la classe Python

coldplay.xixi
Libérer: 2021-01-08 14:13:54
avant
1837 Les gens l'ont consulté

Décrire les attributs de la classe Python

Recommandations d'apprentissage gratuites associées : Tutoriel vidéo Python

  • __getattr__ est la fonction magique getattr qui est appelée lorsque la classe appelle un attribut qui n'existe pas. L'élément de valeur qu'elle transmet est la valeur inexistante que vous appelez.

class User(object):
    def __init__(self, name, info):
        self.name = name
        self.info = info
ls = User("李四",{"gender":"male"})print(ls.info)运行结果:{'gender': 'male'}
Copier après la connexion

Si vous souhaitez obtenir l'attribut masculin, vous devez utiliser la méthode magique __getattr__.

class User(object):
    def __init__(self, name, info):
        self.name = name
        self.info = info    def __getattr__(self, item):
        return self.info[item]ls = User("李四",{"gender":"male"})print(ls.gender)运行结果:
male
Copier après la connexion
  • Les descripteurs de propriétés sont un puissant protocole à usage général. C'est le principe d'appel des propriétés, méthodes, méthodes statiques, méthodes de classe
    et super().
  • Le descripteur d'attribut est une classe qui implémente un protocole spécifique. Tant que l'une des trois méthodes __get__, __set__ et __delete__ est implémentée, cette classe est un descripteur, qui peut implémenter plusieurs attributs. Une façon d'utiliser le la même logique d'accès consiste à créer une instance en tant qu'attribut de classe d'une autre classe.
  • Si un objet définit à la fois les méthodes __get__ et __set__, on l'appelle un descripteur de données.
    Les objets qui définissent uniquement la méthode __get__ sont appelés descripteurs non-données.
  • Créer un descripteur à l'aide des méthodes de classe • ​​Définir une classe IntField comme classe de descripteur • Créer une instance de la classe IntField comme attribut d'une autre classe User
class User:
    def __init__(self, age):
        self.age = age    def get_age(self):
        return (str(self.age) + '岁')

    def set_age(self, age):
        if not isinstance(age, int):
            raise TypeError('Type Error')
        self.age = age

tt=User(55)tt.set_age(60)print(tt.get_age())运行结果:60岁
Copier après la connexion
  • Descripteur Ordre de recherche• Lorsqu'il s'agit d'un descripteur de données, get__ a une priorité plus élevée que __dict
    Lorsqu'il s'agit d'un descripteur de non-données, dict__ a une priorité plus élevée que __get

Pour plus de connaissances liées à la programmation, veuillez visiter : Enseignement de la programmation ! !

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!

Étiquettes associées:
source:csdn.net
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal