我想今天早些时候子类threading.Condition但没有成功。下面是Python解释的输出,当我尝试子类threading.Condition类:

>>> 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.Class)。荣誉对这个帖子帮助我弄清楚了这一点。

  

类型错误:错误调用元类的碱时

     

有关这一项的答案是,你可能名为Python类的   同样的事情模块(即文件),它的。你再   进口模块,并试图使用它像一个类。你这样做   因为你和我一样,很可能是一个Java程序员没有那么长   前:-)。解决它的方法是导入module.class代替   只是模块。或者,对于理智的缘故,改变类的名称   或模块,使得它更明显什么正在导入。

对于子类的模块,这是一个非常容易犯的错误,如果你有, 例如,类Foo在一个文件中定义Foo.py. 当您在不同的文件中创建的Foo的子类,你可能会不小心做以下(这是细分模块,将导致错误的尝试):

import Foo
class SubclassOfFoo(Foo):

当你真的需要做以下活动:

from Foo import Foo
class SubclassOfFoo(Foo):

或:

import Foo
class SubclassofFoo(Foo.Foo):

请注意:这个答案真的应该是上提到继承模块答案评论,但我不能让它因为在这篇文章中描述的行为StackOverflow的评论: https://meta.stackexchange.com/questions/ 23211 /怎么办-I-附加一个注释到一个应答 不要选它,只是因为这一点。

涌入了同样的问题。最后采取的代码产生了浓厚的外观得到解决,这是哪里的警报关于字符串而不是代码TypeError自带约..

Class Class_name(models.model): //(gives a TypeError of 'str' type) 

“和”

Class Class_name(models.Model): // is the correct one. 

注意,特定错误出现约因为单个小写字母的代码的“的模型”,这又使得一个字符串

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top