如何在python中仅获取继承类中的函数名称

cha*_*udu 1 python python-3.x

如何在python中仅获取继承类中的函数名称

class A(object):
    def Afunc1(self):
        pass

    def Afunc2(self):
        pass

class B(A):
    def Bfunc1(self):
        pass

    def Bfunc2(self):
        pass
Run Code Online (Sandbox Code Playgroud)

有没有办法只获取 B 类中的函数名而不是 A 类中的函数名

bru*_*ers 6

这应该有效:

from types import FunctionType
functypes = (FunctionType, classmethod, staticmethod)
[name for name, value in B.__dict__.items() if isinstance(value, functypes)]
Run Code Online (Sandbox Code Playgroud)


blh*_*ing 5

您可以使用该vars函数获取类B本身的属性dict并过滤掉不可调用的类和类:

[k for k, v in vars(B).items() if callable(v) and not isinstance(v, type)]
Run Code Online (Sandbox Code Playgroud)

  • 请注意,`callable()` 对于类返回 true,因此如果该类有另一个类作为类属性(这并不罕见),您将得到误报。这就是为什么我明确地针对函数、类方法和静态方法进行测试。 (2认同)