假设我刚刚在 Python 中实现了一些类,并且想重载“-”运算符,但不记得是否需要使用__subtract__
,__minus__
或者实际上是正确的答案__sub__
。有没有一种快速的方法可以通过解释器找到这个?我尝试了简单的事情,help(-)
但没有成功。
有大量在线资源可以提供可用运营商的最终列表,但我正在寻找一种快速的离线方法。
对于普通的操作员来说,一个人很快就能记住它们,但一些不太常用的操作员经常需要查找。
假设我刚刚在 Python 中实现了一些类,并且想重载“-”运算符,但不记得是否需要使用__subtract__
,__minus__
或者实际上是正确的答案__sub__
。有没有一种快速的方法可以通过解释器找到这个?我尝试了简单的事情,help(-)
但没有成功。
有大量在线资源可以提供可用运营商的最终列表,但我正在寻找一种快速的离线方法。
对于普通的操作员来说,一个人很快就能记住它们,但一些不太常用的操作员经常需要查找。
>>> help('SPECIALMETHODS')
>>> help('BASICMETHODS')
>>> help('NUMBERMETHODS')
>>> help('ATTRIBUTEMETHODS')
>>> help('CALLABLEMETHODS')
>>> help('MAPPINGMETHODS')
>>> help('SEQUENCEMETHODS1')
>>> help('SEQUENCEMETHODS2')
使用dir(obj)
,将列出对象(或类)的所有属性obj
。例如,您知道可以添加整数,因此请键入
>>> dir(int) # using the class int (or type in this case) here
['__abs__',
'__add__',
'__and__',
'__class__',
'__cmp__',
...
或用于格式化输出
>>> print '\n'.join(dir(1)) # using an instance of int here
__abs__
__add__
__and__
__class__
__cmp__
...
那么您可以通过以下方式获取更多信息
>>> help(int.__add__)
使用bpython
(或bpython3
用于 python 3)。
它就像普通的 python repl,但具有完整的标签。
例如,我编写代码:
class a:
def __
我会得到一个包含所有内置功能的菜单。
您可以通过bpython 网站获得它
或者通过sudo apt-get install bpython
在 ubuntu 中做一个。(或sudo apt-get install bpython3
对于 python3.
此外,ipython具有选项卡完整功能,并且使用范围更广。
一个不错的技巧是使用制表符完成来进行猜测。你不记得是minus
, sub
,subtract
还是别的什么,对吧?所以,首先输入int.__m
并点击标签:
In [470]: int.__m
int.__mod__ int.__module__ int.__mro__ int.__mul__
那里没有minus
,所以退格,键入s
,然后再次制表符:
In [470]: int.__s
int.__setattr__ int.__sub__ int.__subclasshook__
int.__sizeof__ int.__subclasscheck__
int.__str__ int.__subclasses__
它就在那里。
这是一个开始。
>>> import operator
>>> print("\n".join(dir(operator)))
__abs__
__add__
__and__
__concat__
__contains__
__delitem__
__doc__
__eq__
__floordiv__
__ge__
__getitem__
__gt__
__iadd__
__iand__
__iconcat__
__ifloordiv__
__ilshift__
__imod__
__imul__
__index__
__inv__
__invert__
__ior__
__ipow__
__irshift__
__isub__
__itruediv__
__ixor__
__le__
__loader__
__lshift__
__lt__
__mod__
__mul__
__name__
__ne__
__neg__
__not__
__or__
__package__
__pos__
__pow__
__rshift__
__setitem__
__sub__
__truediv__
__xor__
_compare_digest
abs
add
and_
attrgetter
concat
contains
countOf
delitem
eq
floordiv
ge
getitem
gt
iadd
iand
iconcat
ifloordiv
ilshift
imod
imul
index
indexOf
inv
invert
ior
ipow
irshift
is_
is_not
isub
itemgetter
itruediv
ixor
le
lshift
lt
methodcaller
mod
mul
ne
neg
not_
or_
pos
pow
rshift
setitem
sub
truediv
truth
xor