首页 > 解决方案 > 如何从其 mixin 中引用附加的类?

问题描述

我有以下 mixin 类和一个主机类,结构如下:

class MyMixin:
    @staticmethod
    def preprocessIncomings(bliss, mod, **kw):
        my_logger(f"{__class__} is doing it's job now!")
        ....

class MyAttachedClass(MyMixin):
    ...

令我惊讶的是,记录器并没有MyAttachedClass像我预期的那样引用。相反,它指的是 mixin 类MyMixin

有没有办法从 mixin 静态方法中引用宿主类?

标签: pythonpython-3.xmixins

解决方案


总结评论中的优点:不, astaticmethod专门设计为不允许您访问从中调用它的实例或类,因此无法从内部preprocessIncomings 知道它是通过调用的MyAttachedClass。这__class__是一个局部变量,您可以将其视为闭包(即,它是从定义代码的外部范围获得的)。

您也许可以用 做更多事情inspect.stack,但更明显的解决方案是将方法更改为classmethod.


推荐阅读