Un autre cas d'utilisation de cette erreur est lorsque vous importez des fonctions dans la définition de la classe. Cela fait que les appels de fonction ultérieurs font partie de l'objet de la classe. Dans ce cas, vous pouvez utiliser @staticmethod sur la fonction d'importation de la bibliothèque ou faire un appel de chemin statique directement à la fonction. Voir l'exemple ci-dessous
Dans cet exemple, "self.bar()" lancera une TypeError, mais cela peut être corrigé de deux manières
# in lib.py
def bar():
print('quelque chose à faire')
# in foo.py
class foo():
from .lib import bar
def __init__(self):
self.bar()
Option 1:
# in lib.py
def bar():
print('quelque chose à faire')
# in foo.py
class foo():
from .lib import bar
def __init__(self):
lib.bar()
Option 2:
# in lib.py:
@staticmethod
def bar():
print('quelque chose à faire')
# in foo.py
class foo():
from .lib import bar
def __init__(self):
self.bar()