我如何获取类的实例的方法,而不是其超类的方法?
示例:
class A:
def a(self):
pass
class B(A):
def b(self):
pass
def c(self):
pass
d = B()
我想要一种方法从b
获取c
和d
,而不是a
。我尝试使用dir(d)
,但列出了a
,b
和c
,而不只是b
和c
。
答案 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__']