相关疑难解决方法(0)

删除现有的类变量产生 AttributeError

我正在通过 Python 的元类操纵类的创建。但是,尽管类由于其父类而具有属性,但我无法删除它。

class Meta(type):
    def __init__(cls, name, bases, dct):
        super().__init__(name, bases, dct)
        if hasattr(cls, "x"):
            print(cls.__name__, "has x, deleting")
            delattr(cls, "x")
        else:
            print(cls.__name__, "has no x, creating")
            cls.x = 13
class A(metaclass=Meta):
    pass
class B(A):
    pass
Run Code Online (Sandbox Code Playgroud)

上面代码的执行产生一个AttributeErrorwhen 类B被创建:

A has no x, creating
B has x, deleting
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-3-49e93612dcb8> in <module>()
     10 class A(metaclass=Meta):
     11     pass
---> 12 class B(A):
     13     pass
     14 class C(B):

<ipython-input-3-49e93612dcb8> in __init__(cls, name, …
Run Code Online (Sandbox Code Playgroud)

python metaclass

7
推荐指数
2
解决办法
412
查看次数

标签 统计

metaclass ×1

python ×1