为啥类创建会引发错误
Posted
技术标签:
【中文标题】为啥类创建会引发错误【英文标题】:why class creation throws error为什么类创建会引发错误 【发布时间】:2011-01-19 12:27:07 【问题描述】:只是在课堂上玩耍
def func(*args, **kwargs):
print args, kwargs
class Klass(func): pass
报错
TypeError:调用时出错 元类基础 function() 参数 1 必须是代码,而不是 str
这是什么意思,我没有通过任何地方? 是的,我应该在基础中传递类,但为什么错误没有说,而不是这个神秘的错误?
【问题讨论】:
标题和大部分问题表明你不明白为什么会这样,但你真的在问为什么错误消息没有不同的文字。 是的,我不明白为什么它会抛出如此神秘的错误,而不是说“函数不能是类基”,我想知道它为什么会引发如此神秘的错误 Python 抛出各种粗鲁的错误! Python3.1 让这条消息变得更无用了TypeError: function() argument 1 must be code, not str
【参考方案1】:
请参阅此处了解神秘消息的原因
http://bugs.python.org/issue6829
问题Error when calling the metaclass bases: function() argument 1 must be code, not str 有同样的问题。
编辑:玩转
虽然您可以使用元类使其以扭曲的方式工作;)
def func(name, klassDict):
return type(name, (), klassDict)
class MyMeta(type):
def __new__(self, name, bases, klassDict):
return bases[0](name, klassDict)
class Klass(func):
__metaclass__ = MyMeta
print Klass
【讨论】:
以上是关于为啥类创建会引发错误的主要内容,如果未能解决你的问题,请参考以下文章
当我尝试从文本文件输入值时,为啥我的类列表(在 C++ 中)会引发错误?