Python中的Dir函数

时间:2013-05-01 13:57:46

标签: python

我正在尝试使用dir函数时了解一些方法..

例如,当我执行以下命令时,它列出了以下方法。以__开头的任何方法都是int对象的内置方法,但如果bit_length,我如何使用conjugatereal等其他函数我将其用作i.real,而bit_lenghth则将其用作i.bit_length()

如何确定何时用作属性(真实)以及何时用作方法调用(bit_length()):

>>> i=0
>>>
>>> dir(i)
['__abs__', '__add__', '__and__', '__class__', '__cmp__', '__coerce__', '__delat
tr__', '__div__', '__divmod__', '__doc__', '__float__', '__floordiv__', '__forma
t__', '__getattribute__', '__getnewargs__', '__hash__', '__hex__', '__index__',
'__init__', '__int__', '__invert__', '__long__', '__lshift__', '__mod__', '__mul
__', '__neg__', '__new__', '__nonzero__', '__oct__', '__or__', '__pos__', '__pow
__', '__radd__', '__rand__', '__rdiv__', '__rdivmod__', '__reduce__', '__reduce_
ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ro
r__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rx
or__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '_
_truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', '
imag', 'numerator', 'real']

3 个答案:

答案 0 :(得分:5)

方法也是属性 。它们只是可调用的属性。

您可以使用内置callable() function来测试某些内容是否可调用:

>>> 1 .bit_length
<built-in method bit_length of int object at 0x7fe7b2c13118>
>>> callable(1 .bit_length)
True
>>> callable(1 .real)
False

答案 1 :(得分:1)

您可以使用hasattr

检查something是否为函数
hasattr(something, '__call__')

答案 2 :(得分:0)

方法具有__call__属性,因此为了确定某些内容是否可调用,请使用:

hasattr(val, '__call__')

问题是方法可以有参数,所以你必须检查参数列表(例如使用Python list function argument names SO问题)