【问题标题】: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

标签: python class


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    • 2015-09-02
    • 2016-08-13
    • 2020-05-22
    • 1970-01-01
    • 2014-12-11
    相关资源
    最近更新 更多