我有以下mixin类和host类,结构如下:
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静态方法引用宿主类
Tags:
总结评论中的优点:不,a
staticmethod
是专门设计的,不允许您访问从中调用它的实例或类,因此无法从preprocessIncomings
内部知道它是通过MyAttachedClass
调用的。__class__
是一个局部变量,您可以像闭包一样查看它(即,它是从定义代码的外部范围中获取的)您可以使用
inspect.stack
做更多的事情,但更明显的解决方案是将该方法更改为classmethod
相关问题 更多 >
编程相关推荐