gpt4 book ai didi

python - 在方法调用中获取当前类

转载 作者:行者123 更新时间:2023-11-28 21:30:03 26 4
gpt4 key购买 nike

class A:
def x ( self ):
print( self.__class__ )

class B ( A ):
pass

b = B()
b.x()

在上述情况下,有没有办法让方法x获取对类A的引用而不是B?当然,简单地编写 print( A ) 是不允许的,因为我想使用需要类 A 的装饰器添加一些功能(并且因为我无法传递 A本身直接传递给装饰器,因为此时该类还不存在)。

最佳答案

除非您涉及 super 调用(或者更常见的是覆盖 x 的子类并直接调用 A.x(self) 作为他们的覆盖实现),在 type(self).mro() 中查找第一个具有 x 属性的项目可以工作 --

next(c for c in type(self).mro() if hasattr(c, 'x'))

如果您确实需要覆盖 super 调用,那就更难了——除非您碰巧知道 A 没有 super 类> 定义了一个 x 属性(当然,了解你的父类(super class)比了解你的子类更容易,尽管多重继承确实会使它变得复杂;-)在这种情况下,你只需要 last mro 的适当项目而不是第一个。

关于python - 在方法调用中获取当前类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3848033/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com