64 votes

Appeler la méthode de classe à partir d'une autre classe

En Python, existe-t-il un moyen d'appeler une méthode de classe à partir d'une autre classe ? J'essaie de créer mon propre framework MVC en Python et je n'arrive pas à comprendre comment appeler une méthode d'une classe dans une autre classe.

Voici ce que je veux qu'il se passe :

 class A:
    def method1(arg1, arg2):
        # do code here

class B:
    A.method1(1,2)

Je me lance lentement dans Python à partir de PHP, donc je recherche l'équivalent Python de call_user_func_array() de PHP.

15voto

ratiotile Points 705

Appelez-le et fournissez self

 class A:
    def m(self, x, y):
        print(x+y)

class B:
    def call_a(self):
        A.m(self, 1, 2)

b = B()
b.call_a()

sortie : 3

4voto

Joshua Hufford Points 41

Vous pouvez appeler une fonction depuis une classe avec :

A().method1()

0voto

run_the_race Points 1700

Dans la fonction Python, ce sont des citoyens de première classe, vous pouvez donc simplement l'attribuer à une propriété comme n'importe quelle autre valeur. Ici, nous attribuons la méthode du A à une propriété sur B . Après __init__ , hello sera attaché à B sous la forme self.hello , qui est en fait une référence au hello de A :

 class A:
    def hello(self, msg):
        print(f"Hello {msg}")
    
class B:
    hello = A.hello

print(A.hello)
print(B.hello)

b = B()
b.hello("good looking!")

Impressions :

 <function A.hello at 0x7fcce55b9e50>
<function A.hello at 0x7fcce55b9e50>
Hello good looking!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X