给定一个对象myObject
,我做
print dir(myObject)
这将转储变量和方法名称。我如何区分哪些是变量,哪些是方法?
答案 0 :(得分:2)
您可以使用types.MethodType
识别方法:
In [1]: class A:
...: def __init__(self):
...: self.x = 2
...: def f(self):
...: return 1
In [2]: a=A()
In [3]: import types
In [4]: isinstance(a.f, types.MethodType)
Out[4]: True
注意:静态方法的类型为types.FunctionType
。
更新:因此,要获取所有函数名称,您可以执行
In [5]: [name for name in dir(a) if isinstance(getattr(a, name), types.MethodType)]
Out[5]: ['__init__', 'f']
答案 1 :(得分:2)
@JanPöschko的回答是正确的,但不会捕获所有方法。根据用例,检查方法的最佳方法可能是好callable
。
>>> class Foo(object):
... pass
>>> [member for member in dir(Foo()) if callable(getattr(Foo(), member))]
['__class__', '__delattr__', '__format__', '__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
这也捕获了类和静态方法。