2 votes

Python - Instanciation manuelle requise quoi qu'il arrive ?

Je pensais que je pouvais le faire :

from mymodule import MyClass
import asyncio

await asyncio.gather(MyClass.myfunc1(),
                         MyClass.myfunc2(),
                         MyClass.myfunc3()
                         )

qui produit l'erreur : missing 1 required positional argument: 'self'

Donc je l'ai réparé en :

class1 = MyClass()
class2 = MyClass()
class3 = MyClass()
await asyncio.gather(class1.myfunc1(),
                     class2.myfunc2(),
                     class3.myfunc3()
                     )

Cela semble fonctionner correctement mais j'ai vu d'autres modules qui permettent de l'appeler par ClassName.method() sans instanciation préalable. Ou peut-être que c'était juste un accès à une propriété. Je ne suis pas sûr. Est-ce que je fais la bonne chose ou existe-t-il un autre moyen ?

1voto

self désigne l'objet créé ou l'instance (Class1, Class2 et Class3) de la classe MyClass . Ainsi, en appelant les méthodes de MyClass vous devez passer l'objet en tant que paramètre. Vous pouvez le faire de deux façons. 1. En utilisant l'objet comme paramètre

Myclass.myfunc(Class1)

  1. En créant d'abord une instance.

    Class1.myfunc()

Le second est le meilleur moyen. Ici, vous n'avez pas besoin de passer de paramètre car Class1 est automatiquement utilisé comme premier paramètre qui est self.

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