Dans cet article, j'écrirai sur ce qu'est une "méthode de classe". Articles jusqu'à la dernière fois ↓ ↓ ↓ Ceci et celui des propriétés python
En un mot, c'est une «méthode qui peut être utilisée directement à partir d'une classe, comme une variable de classe». (Une méthode est une fonction dans une classe)
@classmethod
nom de la méthode def(cls,Argument 1,Argument 2, ...):
C'est la forme d'une méthode de classe. Je pense que c'est facile à dire car il y a certaines parties qui sont différentes des fonctions que nous avons vues jusqu'à présent. (1) Puisque l'instance (entité) n'existe pas, le «soi» qui se représente n'est pas préparé. (2) Un argument appelé 'cls' est préparé à la place de 'soi' et l'objet de la classe dans laquelle la méthode de classe est stockée est affecté.
Lors de l'appel d'une méthode de classe, il est possible de l'appeler directement depuis la classe.
#Appel d'une méthode de classe
nom de la classe.Nom de la méthode de classe()
#Pour les méthodes normales
hello =nom de la classe#Création d'instance
hello.Nom de la méthode#Appel de méthode
Soyez prudent lorsque vous l'utilisez, car la partie appelante est également différente.
J'ai mentionné la méthode de classe plus tôt comme "une méthode qui peut être utilisée directement à partir de la classe comme une variable de classe". Mais si vous ne savez pas quelles sont les variables de classe en premier lieu, je pense que c'est une chose rafraîchissante. La variable de classe est la partie "message" du code ci-dessous.
class Lesson:
message = 'OK'
def print(self):
print(Lesson.message)
le = Lesson() #Création d'instance
le.print() #appel de méthode d'impression
Lesson.message = 'Welcome!' #'message'Le contenu de la variable'Welcome!'changer en
le.print() #encore'méthode d'impression'appel
print(Lesson.message) #Appelez également le message de variable de classe
Je ne pense pas que ce soit si difficile parce que c'est comme une variable normale.
Comme vous pouvez le voir à la toute fin, vous pouvez l'appeler directement depuis la classe sans créer d'instance. En effet, contrairement aux méthodes (celles avec def), les valeurs sont stockées dans la classe elle-même, pas dans l'instance.
Une méthode de classe est une combinaison de variables de classe et de méthodes. Il peut être appelé directement depuis la classe et peut être facilement modifié.
class MyObj:
message = 'OK'
@classmethod
def print(cls):
print(cls.message)
MyObj.print() #OK
MyObj.message = 'Welcome!'
MyObj.print() #Welcome!
print(MyObj.message) #Welcome!
#Pour les méthodes normales
#mo = MyObj()
#mo.print()
Vous pouvez voir que vous pouvez l'appeler directement depuis la classe sans créer d'instance. Vous pouvez voir qu'elle est différente de la méthode normale car vous pouvez facilement modifier la valeur.
Maintenant, préparons une méthode normale et une méthode de classe et vérifions comment elles se comportent lorsqu'une instance est créée.
class A():
count = 0
def __init__(self):
A.count += 1 #Chaque fois qu'une instance est créée'count'Est ajouté
def exclaim(self):
print('I am an A!')
@classmethod
def kids(cls):
print('A has', cls.count, 'title objects.') #Montre combien de fois il a été compté
a = A() #Créer une instance
b = A() #Créer une instance
c = A() #Créer une instance
A.kids() #Appel d'une méthode de classe'A has 3 title objects.'
Il s'agit d'un "compte" ajouté chaque fois qu'une instance est créée.
Après avoir créé une instance trois fois avec "a", "b" et "c", la méthode de classe est appelée pour afficher le nombre de fois qu'elle a été comptée. Puisque l'instance a été créée 3 fois, vous pouvez voir que «compte» est ajouté par «3». Lorsque vous appelez la méthode de classe, elle n'est pas ajoutée car l'instance n'est pas créée.
Je voudrais résumer ici les différences entre eux.
#Méthode de classe
@classmethod
nom de la méthode def(cls,Argument 1,Argument 2, ...):
#Méthode
nom de la méthode def(self,Argument 1,Argument 2, ...):
#une fonction
nom de la fonction def():
Vous pouvez voir la différence en les organisant de cette manière. ① Différence entre la méthode de classe et la méthode -> Les méthodes ne peuvent pas être appelées sans créer une instance, mais les méthodes de classe peuvent être appelées directement depuis la classe.
② Différence entre la méthode de classe et la fonction -> Vous pouvez obtenir la classe elle-même appelée "cls" comme premier argument. Une autre différence est qu'il se trouve dans une classe, vous pouvez donc l'utiliser en important la classe.
De là, nous expliquerons les méthodes statiques. La méthode statique est une méthode de classe, mais la différence est que vous n'avez pas besoin de spécifier d'argument. Voyons-le réellement.
@staticmethod
nom de la méthode def():
print("C'est une méthode statique.")
#appel
nom de la classe.Nom de la méthode()
Quand c'était une méthode de classe, il y avait quelque chose appelé "cls" dans le premier argument, mais ce n'est pas dans la méthode statique. C'est facile à comprendre si vous pensez que c'est presque la même chose que la méthode. Elle n'est pas souvent utilisée, mais elle se caractérise par la possibilité d'être appelée directement depuis la classe comme la méthode de classe.
Dans cet article, j'ai parlé des «méthodes de classe» et des «méthodes statiques». Les articles seront mis à jour à l'avenir. Articles jusqu'à la dernière fois ↓ ↓ ↓ Ceci et celui des propriétés python
Recommended Posts