python - 如何从其 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 静态方法中引用宿主类?
解决方案
总结评论中的优点:不, astaticmethod
专门设计为不允许您访问从中调用它的实例或类,因此无法从内部preprocessIncomings
知道它是通过调用的MyAttachedClass
。这__class__
是一个局部变量,您可以将其视为闭包(即,它是从定义代码的外部范围获得的)。
您也许可以用 做更多事情inspect.stack
,但更明显的解决方案是将方法更改为classmethod
.
推荐阅读
- java - 如何从 Java 中的后台服务发送 POST 请求?
- java - Install4J 注册自定义 URI Mac
- java - Maven 项目的资源文件夹丢失其资源定义
- spring-boot - 为 id “null”映射的 PasswordEncoder
- javascript - 访问删除请求返回的结果 mongoose
- sql - SQL 在日期之间可用
- angular - 在 Angular 的一项服务中使用“ElementRef”时出错
- r - 找到反向边缘并从它的对面中减去它的权重
- sql - Redshift - 问题在存储在表中的表中显示时差
- unity3d - Unity VRTK资产错误