Maison  >  Article  >  développement back-end  >  La différence entre les méthodes de classe Python et les méthodes d'instance

La différence entre les méthodes de classe Python et les méthodes d'instance

(*-*)浩
(*-*)浩original
2019-06-29 09:27:066820parcourir

Les types de méthodes les plus courants en Python sont les méthodes d'instance et les méthodes de classe. Comment sont-ils définis ? Comment l'appeler ? Quelles sont leurs différences et leurs fonctions ? Voir ci-dessous.

La différence entre les méthodes de classe Python et les méthodes d'instance

Tout d'abord, ces méthodes sont définies dans la classe. Permettez-moi d’abord de parler brièvement de la façon de le définir et de l’appeler. (PS : les objets d'instance ont les plus grandes autorisations.)

Méthode d'instance (Apprentissage recommandé : Tutoriel vidéo Python)

Définition : premier paramètre It doit être un objet d'instance. Le nom du paramètre est généralement accepté comme étant "self", à travers lequel les attributs et les méthodes de l'instance sont passés (les attributs et les méthodes de la classe peuvent également être passés

appel) ; : ne peut être appelé que par l'objet instance.

Méthode de classe

Définition : Utiliser le décorateur @classmethod. Le premier paramètre doit être l'objet de classe actuel. Le nom du paramètre est généralement accepté comme étant "cls", par lequel les attributs et méthodes de la classe sont transmis (les attributs et méthodes de l'instance ne peuvent pas être transmis

Appel : l'objet instance et les objets classe peuvent être appelés.

Méthodes d'instance

En bref, les méthodes d'instance sont des méthodes qui peuvent être utilisées par les instances d'une classe. Pas beaucoup d'explications ici.

Méthode de classe

Utilisez le décorateur @classmethod.

En principe, les méthodes de classe sont des méthodes qui opèrent sur la classe elle-même en tant qu'objet. Supposons qu'il existe une méthode et qu'il est logiquement plus raisonnable que cette méthode soit appelée en utilisant la classe elle-même comme objet, alors cette méthode peut être définie comme une méthode de classe. De plus, si l’héritage est requis, il peut également être défini comme méthode de classe.

Supposons que j'ai une classe d'élèves et une classe de classe. Les fonctions que je souhaite implémenter sont :

Effectuer l'opération d'augmentation de la taille de la classe et obtenir le nombre total de membres de la classe ; >

Étudiant La classe hérite de la classe class. Chaque fois qu'un élève est instancié, le nombre d'élèves dans la classe peut augmenter

Enfin, je souhaite définir certains élèves et obtenir le nombre total d'élèves ; élèves dans la classe.

class ClassTest(object):
    __num = 0

    @classmethod
    def addNum(cls):
        cls.__num += 1

    @classmethod
    def getNum(cls):
        return cls.__num

    # 这里我用到魔术方法__new__,主要是为了在创建实例的时候调用累加方法。
    def __new__(self):
        ClassTest.addNum()
        return super(ClassTest, self).__new__(self)


class Student(ClassTest):
    def __init__(self):
        self.name = ''

a = Student()
b = Student()
print(ClassTest.getNum())

Pour plus d'articles techniques liés à Python, veuillez visiter la colonne

Tutoriel Python

pour apprendre !

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:
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