我正在尝试使用dir函数时了解一些方法..
例如,当我执行以下命令时,它列出了以下方法。以__
开头的任何方法都是int
对象的内置方法,但如果bit_length
,我如何使用conjugate
,real
等其他函数我将其用作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']
答案 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)
答案 2 :(得分:0)
方法具有__call__
属性,因此为了确定某些内容是否可调用,请使用:
hasattr(val, '__call__')
问题是方法可以有参数,所以你必须检查参数列表(例如使用Python list function argument names SO问题)