python - 如何从函数中截取实例化的类名?

标签 python oop inheritance instance

我在一个项目中遇到了一个问题,我设法将其简化为一个尽可能简单的示例。考虑以下因素

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/

相关文章:

Python从子模块导入子模块

python - 在不依赖 unrar.dll 的情况下使用 python 解压缩文件

c++ - 继承中构造函数相关的查询

Python - 函数继承 - 更改关键字参数

Java继承抽象类

python - 是否有比此代码更快的替代方法来删除 Pandas 中的停用词和标点符号?

python - 通过应用传递闭包创建唯一数字列表

javascript - 在 Javascript 中使用 includes() 匹配对象二维数组

javascript - 在 JavaScript 中用字符串调用类

c# - WinForms 相当于 WPF 的 IsHitTestVisible