J'ai essayé de sous-classer le threading.Condition plus tôt aujourd'hui mais cela n'a pas fonctionné. Voici la sortie de l'interpréteur Python lorsque je tente de sous-classe la classe threading.Condition:Erreur lors de l'appel des bases de la métaclasse: L'argument function() 1 doit être le code, et non le
>>> import threading
>>> class ThisWontWork(threading.Condition):
... pass
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Error when calling the metaclass bases
function() argument 1 must be code, not str
Quelqu'un peut-il expliquer cette erreur? Merci!
Étrange, je ne pensais pas à vérifier son type. Les docs semblent être un peu trompeurs parce qu'ils disent (http://docs.python.org/library/threading.html) "class threading.Condition ([lock])" qui semble un peu trompeur. Quoi qu'il en soit, merci d'avoir clarifié ça :). –
Je le vois aussi bien en utilisant par erreur un module comme un baseclass: class Command (main.cmdroot.list.hosts) plutôt que la commande correcte (main.cmdroot.list.hosts.Command) – FDS
Une autre cause commune est de dériver de une classe de base qui a un décorateur. Le décorateur peut également changer le type de la classe de base en "type <'function'>". –