如何从其 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
。相反,它指的是 mixin class MyMixin
.
有没有办法从 mixin 静态方法引用主机 class?
总结评论中的优点:不,staticmethod
是专门设计的,不允许您访问调用它的实例或 class,因此没有办法从 preprocessIncomings
中知道它是通过 MyAttachedClass
调用的。 __class__
是一个局部变量,您可以将其视为闭包(即,它是从定义代码的外部范围获取的)。
您可以使用 inspect.stack
做更多事情,但更明显的解决方案是将方法更改为 classmethod
。
我有以下 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
。相反,它指的是 mixin class MyMixin
.
有没有办法从 mixin 静态方法引用主机 class?
总结评论中的优点:不,staticmethod
是专门设计的,不允许您访问调用它的实例或 class,因此没有办法从 preprocessIncomings
中知道它是通过 MyAttachedClass
调用的。 __class__
是一个局部变量,您可以将其视为闭包(即,它是从定义代码的外部范围获取的)。
您可以使用 inspect.stack
做更多事情,但更明显的解决方案是将方法更改为 classmethod
。