【发布时间】:2014-10-13 20:25:53
【问题描述】:
Python 文档说metaclass of a class can be any callable.我看到的所有示例都使用一个类。为什么不使用函数?它是可调用的,并且定义起来相当简单。但它不起作用,我不明白为什么。
这是我的代码:
class Foo(object):
def __metaclass__(name, base, dict):
print('inside __metaclass__(%r, ...)' % name)
return type(name, base, dict)
print(Foo.__metaclass__)
class Bar(Foo):
pass
print(Bar.__metaclass__)
这是输出:
inside __metaclass__('Foo', ...)
<unbound method Foo.__metaclass__>
<unbound method Bar.__metaclass__>
元类方法是为父类和子类定义的。为什么只为父母打电话? (是的,我尝试为我的元类使用 classmethod 和 staticmethod 装饰器,但都不起作用。是的,这似乎是 Metaclass not being called in subclasses 的复制品,但它们是一个类,而不是一个函数,作为一个元类。)
【问题讨论】:
-
我添加了一个链接到文档的相关部分。请检查这是您的想法。
标签: python python-2.7 metaclass