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

Décrire les attributs de la classe Python

coldplay.xixi
coldplay.xixiavant
2021-01-08 10:10:541789parcourir

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'}

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
  • 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岁
  • 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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer