问题描述
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
。