如何从其mixin引用附加类?

2024-09-21 00:48:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下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: modhostismydefloggermixin结构
1条回答
网友
1楼 · 发布于 2024-09-21 00:48:27

总结评论中的优点:不,astaticmethod是专门设计的,不允许您访问从中调用它的实例或类,因此无法从preprocessIncomings 内部知道它是通过MyAttachedClass调用的。__class__是一个局部变量,您可以像闭包一样查看它(即,它是从定义代码的外部范围中获取的)

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

相关问题 更多 >

    热门问题