繁体   English   中英

如何从其 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 相反,它指的是混合 class MyMixin

有没有办法从 mixin static 方法中引用主机 class ?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM