Я пытался разделить поточную обработку на подклассы. Условие ранее сегодня, но это не удалось. Вот вывод интерпретатора 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, но оно было помечено как "не будет исправлено"
.Другая проблема, чем у OP, но вы также можете получить эту ошибку, если попытаетесь создать подкласс из модуля вместо класса (например, вы попытаетесь унаследовать My.Module вместо My.Module. Класс). Престижность этот пост за то, что помог мне разобраться в этом.
TypeError: Ошибка при вызове баз метаклассов
Для этого ответ заключается в том, что вы, вероятно, назвали класс python то же самое, что и модуль (т.е. файл), в котором он находится. Затем вы импортировал модуль и попытался использовать его как класс. Ты сделал это потому что вы, как и я, вероятно, не так долго были Java-программистом тому назад :-). Способ исправить это - импортировать module.class вместо просто модуль. Или, ради здравого смысла, измените имя класса или модуль, чтобы было более очевидно, что импортируется.