如何在Python中检查对象具有的方法?

TIM*_*MEX 6 python methods object

例如,一个列表.

l1 = [1,5,7]我如何检查它的方法?

(例如,l1.append)

或者字符串... string.lower(

Mar*_*ers 21

您可以使用dir获取任何对象的方法列表.这在交互式提示中非常有用:

>>> dir(l1)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__',
'__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__',
'__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__',
'__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__',
'__str__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
Run Code Online (Sandbox Code Playgroud)

有趣的方法通常是那些不以下划线开头的方法.如果您愿意,可以编写自己的dir版本,忽略以下划线开头的名称:

>>> mydir = lambda a:[x for x in dir(a) if not x.startswith('_')]
>>> mydir([])
['append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
Run Code Online (Sandbox Code Playgroud)

  • 至少你应该使用`if not(x.startswith('__')和x.endswith('__'))`因为人们经常使用`__`前缀来表示私有成员.你只想删除以__`开头和结尾的那些 (2认同)
  • 可能值得指出`dir()`不仅限于交互式提示(你的语句可以这样读,对不熟悉它的人) (2认同)