1. ホーム
  2. python

[解決済み] メタクラス・ベース呼び出し時のエラー: function() 引数1はstrではなくcodeでなければならない

2022-02-24 18:09:03

質問

今日、早速threading.Conditionのサブクラスを作ろうとしたのですが、うまくいきません。以下は、threading.Conditionクラスをサブクラス化しようとしたときのPythonインタープリタの出力です。

>>> 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

どなたかこのエラーについて説明してください。 ありがとうございます。

解決方法を教えてください。

その例外が発生するのは、クラスのような名前であるにもかかわらず threading.Condition は関数であり、関数をサブクラス化することはできません。

>>> type(threading.Condition)
<type 'function'>

このあまり役に立たないエラーメッセージが Python のバグトラッカーに報告されました。 しかし、これは "won't fix." とマークされています。