有没有办法在不使用内置函数的情况下获取对象的所有属性?我希望在没有类型包的情况下实现这一点,或者如果可能的话,不要手动检查双下划线。
我试过了dir,但它给了我所有内置的东西。理想情况下,我喜欢像
这样的东西class A():
foo = 'bar'
>>>> dir(a)
['foo']
而不是
>>>> dir(a)
['__doc__', '__module__', 'foo']
答案 0 :(得分:9)
您是否只想过滤掉“特殊”方法,或者实际知道实例本身实现了哪些方法,而不是从基础继承(或两者都是,因为这些是不同的问题,真的)?
您可以使用相当简单的方法过滤掉特殊方法:
def vdir(obj):
return [x for x in dir(obj) if not x.startswith('__')]
>>> vdir(a)
['foo']
答案 1 :(得分:0)
我发现自己经常编写代码来执行此操作,以至于将其与其他一些杂项功能一起放入了一个名为apoor的小型Python包中。
>>> from apoor import fdir
>>> class A: foo = “bar”
>>> fdir(A)
[“foo”]