Méthodes de classe Python

Les méthodes de classe Python sont principalement divisées en trois types : les méthodes d'instance, les méthodes de classe et les méthodes statiques.

Méthode 1 instance

Une méthode avec self comme premier paramètre est une méthode d’instance de la classe. Cette méthode est appelée par une instance de la classe et Python transmet l'objet instance appelant la méthode à self.

Le code suivant définit une classe nommée A.

class A:
    def __init__(self):
        self.i = 0
    def i_f(self):
        self.i += 1

Parmi eux, i_f() est une méthode d'instance de classe A et i est une variable d'instance de classe A.

a1 = A()
a1.i_f()
a2 = A()

Dans le code ci-dessus, les objets a1 et a2 de classe A sont définis et i_f() est appelé via a1. À ce stade, la valeur du paramètre self de la méthode i_f() est a1 et la valeur de a1.i devient 1, et a2 La valeur de .i est toujours 0, comme le montre la figure 1.

Figure 1 La relation entre a1 et a2

Méthodes de classe 2

Les méthodes de classe affecteront la classe entière et toute modification apportée à la classe affectera tous ses objets d'instance. Les méthodes de classe sont généralement modifiées avec le préfixe @classmethod. Semblable aux méthodes d'instance, le premier paramètre d'une méthode de classe est la classe elle-même. Ce paramètre est généralement écrit sous la forme cls. Le code est le suivant.

class A:
    i = 0
    def __init__(self):
        A.i += 1
    @classmethod
    def show_i(cls):
        print(cls.i)

Parmi eux, i est la variable de classe de A. Chaque fois qu'un objet instance de A est généré, la variable de classe i sera incrémentée de 1. show_i() est modifié par @classmethod, c'est donc une méthode de classe de A. Cette méthode peut imprimer le nombre de fois que la classe A est instanciée.

a1 = A()
a2 = A()
a3 = A()
A.show_i()

Dans le code ci-dessus, comme A est instancié trois fois, le résultat imprimé est 3.

3 méthodes statiques

Les méthodes statiques sont décorées avec @staticmethod, qui n'affectera ni la classe ni les objets de la classe. Le code est comme suit

class A:
    def __init__(self):
        self.i = 0
    @staticmethod
    def set_i():
        i = 1

Parmi elles, la méthode set_i() de classe A est une méthode statique. On peut voir que la méthode statique n'a ni paramètre self ni paramètre cls.

a1 = A()
A.set_i()

À l’heure actuelle, bien que la méthode set_i() soit appelée, la valeur de a1.i est toujours 0.

Il convient de noter que les méthodes statiques peuvent également être modifiées sans @staticmethod.

Je suppose que tu aimes

Origine blog.csdn.net/hou09tian/article/details/132685996
conseillé
Classement