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

问题描述

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

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

class MyAttachedClass(MyMixin):
    ...

令我惊讶的是,记录器没有按照我的意图引用 MyAttachedClass。相反,它指的是混合类 MyMixin

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

解决方法

总结评论中的优点:不,staticmethod 专门设计为不让您访问从中调用它的实例或类,因此无法从 {{1} 内部知道}} 它是通过 preprocessIncomings 调用的。 MyAttachedClass 是一个局部变量,您可以将其视为一个闭包(即,它来自代码定义位置的外部作用域)。

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