创建一个简单的元类

时间:2013-04-05 15:29:01

标签: python class factory metaclass

我今天早些时候问了一个问题,我只想找到解决问题的方法。 我期待使用元类,但有一些不同的东西,它的工作原理。 但是,现在我对与之前的问题有关的事情感兴趣:为什么我的元类不起作用?

以下是我上一个问题的链接,但您无需阅读以回答此问题:How do I create a simple metaclass?

所以让我再次提出这个问题,这次是出于一个完全不同的原因:我如何创建一个简单的元类? 这就是我所拥有的,我不明白为什么它不起作用。

class MyMeta(type):
    def __new__(mcls, name, bases, attrs):
        attrs['my_attr'] = True     
        return super().__new__(mcls, name, bases, attrs)

class MyClass:
    __metaclass__ = MyMeta

print(MyClass.my_attr)

最后一行显示以下错误:

AttributeError: type object 'MyClass' has no attribute 'my_attr'

1 个答案:

答案 0 :(得分:0)

在Python 3中,您specify the metaclass differently

class MyClass(metaclass=MyMeta):
    pass