méthodes de classe
1. Méthodes spécifiques à la classe
Lorsqu'une classe est créée, elle contiendra certaines méthodes, principalement les méthodes suivantes :
Méthodes spécifiques à la classe :
Méthodes | Description |
__init__ | Constructeur, appelé lors de la génération d'un objet |
__del__ | Destructeur, utilisé lors de la libération d'un objet |
__repr__ | Imprimer, convertir |
__setite m__ | Attribuer une valeur en fonction de l'index |
__getitem__ | Obtenir la valeur en fonction de l'index |
__len__ | Obtenir la longueur |
__cmp__ | Opération de comparaison |
__call__ | Appel de fonction |
__add__ | Opération d'addition |
__sub__ | Opération de soustraction |
__mul__ | Opération de multiplication |
__div__ | Opération de division |
__mod__ | Reste opération |
__pow__ | Powered |
Bien sûr, nous avons parfois besoin d'obtenir des informations pertinentes sur une classe. Nous pouvons utiliser les méthodes suivantes :
type(obj) : pour obtenir le type correspondant de l'objet ;
isinstance(obj, type) : pour déterminer si l'objet est sélectionné. l'objet est du type spécifié.Exemple ;
hasattr(obj, attr): Détermine si l'objet a l'attribut/la méthode spécifié ;
getattr(obj, attr[, default]) Obtenez la valeur de l'attribut/de la méthode, s'il n'y a pas d'attribut correspondant, renvoie la valeur par défaut (le principe est que la valeur par défaut est définie), sinon une exception AttributeError sera levée
setattr(obj, attr, value) : définit la valeur de l'attribut/de la méthode, similaire ; to obj.attr=value;
dir(obj): Oui Obtenez une liste de tous les attributs et noms de méthodes de l'objet correspondant :
2 Contrôle d'accès aux méthodes
En fait, nous pouvons également considérer les méthodes comme des attributs. de la classe, donc le contrôle d'accès des méthodes est le même que celui des attributs. Il n'y a pas de méthodes essentiellement privées. Tout repose sur le fait que les programmeurs respectent consciemment les normes de programmation Python.
L'exemple est le suivant, les règles spécifiques sont les mêmes que celles des propriétés,
#!/usr/bin/env python # -*- coding: UTF-8 -*- class User(object): def upgrade(self): pass def _buy_equipment(self): pass def __pk(self): pass
3 La méthode decorator
@classmethod est appelée directement en utilisant le nom de la classe au lieu d'un objet
@property est accessible comme The. la méthode d'appel est la même que l'attribut
Voir l'exemple d'utilisation spécifique :
#!/usr/bin/env python # -*- coding: UTF-8 -*- class UserInfo(object): lv = 5 def __init__(self, name, age, account): self.name = name self._age = age self.__account = account def get_account(self): return self.__account @classmethod def get_name(cls): return cls.lv @property def get_age(self): return self._age if __name__ == '__main__': userInfo = UserInfo('两点水', 23, 347073565); # 打印所有属性 print(dir(userInfo)) # 打印构造函数中的属性 print(userInfo.__dict__) # 直接使用类名类调用,而不是某个对象 print(UserInfo.lv) # 像访问属性一样调用方法(注意看get_age是没有括号的) print(userInfo.get_age)
Le résultat de l'opération :