如何从其 mixin 中引用附加的 class?

How to reference the attached class from its mixin?

我有以下 mixin class 和主机 class,结构如下:

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

class MyAttachedClass(MyMixin):
    ...

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

有没有办法从 mixin 静态方法引用主机 class?

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

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