获取类的所有方法,但不是超类的方法

时间:2014-07-02 21:10:57

标签: python class python-3.x

我如何获取类的实例的方法,而不是其超类的方法?

示例:

class A:
    def a(self):
        pass

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

    def c(self):
        pass

d = B()

我想要一种方法从b获取cd,而不是a。我尝试使用dir(d),但列出了abc,而不只是bc

1 个答案:

答案 0 :(得分:1)

通过.__class__属性

在类本身上使用vars()
vars(d.__class__)

或使用type()检索课程:

vars(type(d))

这为您提供了词典(具体来说,是mappingproxy),您可以随时通过调用list()来获取名称:

>>> vars(type(d))
mappingproxy({'__module__': '__main__', 'b': <function B.b at 0x1028a7378>, 'c': <function B.c at 0x103168598>, '__doc__': None})
>>> list(vars(type(d)))
['__module__', 'b', 'c', '__doc__']