如果我有以下类,获取变量和方法的确切列表的最佳方法是什么,排除父类(super class)中的变量和方法?
class Foo(Bar):
var1 = 3.14159265
var2 = Baz()
@property
def var3(self):
return 42
def meth1(self, var):
return var
我希望元组 ('var1','var2','var3','meth1')
开销最小。这是在 Django 环境中运行的,它似乎将它的一些类实例变量放在只读的 __dict__
变量中;这是我无法复制的壮举。
这是我在玩它时看到的,除了从 dir() 中删除 __*
或手动列出它们之外还有什么建议吗?
>>> a=Foo()
>>> a
<__main__.Foo instance at 0x7f48c1e835f0>
>>> dict(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: iteration over non-sequence
>>> dir(a)
['__doc__', '__module__', 'meth1', 'var1', 'var2', 'var3']
>>> a.__dict__
{}
最佳答案
如果类及其父类(super class)是已知的,则类似于:
tuple(set(dir(Foo)) - set(dir(Bar)))
如果你想让它更通用,你可以使用类似
的东西获得基类列表bases = Foo.mro()
...然后使用该列表从所有基类中减去属性。
关于python - 在 Python 中获取类的变量和方法的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5607307/