我在一个项目中遇到了一个问题,我设法将其简化为一个尽可能简单的示例。考虑以下因素
class A:
def f(self):
return 'I am f()'
class B(A):
def g(self):
return 'I am g()'
a = A()
b = B()
print(a.f.__qualname__)
print(b.f.__qualname__)
print(b.g.__qualname__)
我得到的输出
A.f
A.f
B.g
我期望的输出
A.f
B.f
B.g
因为我关心的不仅是函数名,还有类名,实际上不是定义函数的类,而是实例化的类。有人知道如何获得它吗?
最佳答案
我认为你可以尝试这样的事情:
def dynamic_qualname(method):
return method.__self__.__class__.__name__ + '.' + method.__name__
print(dynamic_qualname(a.f))
print(dynamic_qualname(b.f))
print(dynamic_qualname(b.g))
# Output
A.f
B.f
B.g
关于python - 如何从函数中截取实例化的类名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75192169/