小编pau*_*uap的帖子

为什么我的元类实现因类型错误而无法创建NoneType实例而失败

我有以下Python代码:

class MetaData(object):
    _md = {}

class _ClassMeta(type):
    def __new__(cls, clsname, bases, dct):
        ncls = super(_ClassMeta, cls).__new__(cls, clsname, bases, dct)
        MetaData._md[clsname] = ncls

class Meta(object):
    __metaclass__ = _ClassMeta

class Test(Meta):
    pass
Run Code Online (Sandbox Code Playgroud)

当我尝试执行它时,我得到了这个:

TypeError: Error when calling the metaclass bases
    cannot create 'NoneType' instances
Run Code Online (Sandbox Code Playgroud)

在线,class Test(Meta): 我不明白为什么.__new__对于Meta类,元类的功能显然被称为精细,但不适用于派生的Test类.

对于那些问"为什么"的人 - 我正在探索运行时类注册和修改像Django和SqlAlchemy这样的ORM框架.这可能不是我最终会生成我的代码的方式,但我仍然想知道为什么我会收到TypeError异常.

python metaclass python-2.7

4
推荐指数
1
解决办法
1684
查看次数

标签 统计

metaclass ×1

python ×1

python-2.7 ×1