说我有课:
class Foo(Parent):
a = 1
b = 2
def bar(self, x):
pass
我想列出其所有属性,我找到了inspect
:
import inspect
inspect.getmembers(Foo)
但这会提供Foo
的所有属性,包括来自Parent
的属性,但我只想要a
,b
,bar
答案 0 :(得分:3)
有一种方法,但它很脏,你必须过滤掉__module__
或__doc__
之类的内容:
Foo.__dict__
答案 1 :(得分:2)
但是在父上定义的属性是子项的直接属性。那是继承如何运作的,也是一个基本原则。该对象不知道或关心它们的定义位置。
如果您需要以某种方式解决这个问题,一种方法可能是获取父项的属性列表,并从子项的属性列表中减去它们。但你真的不应该这样做。