dir()没有内置方法

Mik*_*ike 10 python

有没有办法获得没有内置ins的对象的所有属性?我希望在没有类型包的情况下实现这一点,或者如果可能的话,不要手动检查双下划线.

我试过dir,但它给了我所有内置的东西.理想情况下,我喜欢这样的东西

class A():
    foo = 'bar'
>>>> dir(a)
['foo']
Run Code Online (Sandbox Code Playgroud)

代替

>>>> dir(a)
['__doc__', '__module__', 'foo']
Run Code Online (Sandbox Code Playgroud)

Nic*_*tin 11

您是否只想过滤掉"特殊"方法,或者实际知道哪些方法在实例本身中实现,而不是从基础继承(或两者都是,因为这些是不同的问题,真的)?

您可以使用一些相当简单的方法过滤掉特殊方法:

def vdir(obj):
    return [x for x in dir(obj) if not x.startswith('__')]

>>> vdir(a)
['foo']
Run Code Online (Sandbox Code Playgroud)

  • “检测到这些的唯一方法是通过字符串函数?” 是的,特殊方法与常规方法相同,双下划线的区别只是一个约定。 (3认同)