通过解释器查看所有python运算符的列表
假设我刚刚在Python中实现了一些类,并想重载“-”操作符,但不记得我是否需要使用通过解释器查看所有python运算符的列表,python,operator-overloading,naming,Python,Operator Overloading,Naming,假设我刚刚在Python中实现了一些类,并想重载“-”操作符,但不记得我是否需要使用\uuuuuuu减法,\uuuuu减法,或者实际上是正确的答案\uuuuuu sub。有没有一种快速的方法可以通过翻译找到答案?我尝试了一些简单的方法,比如help(-),但没有成功 有很多在线资源可以提供可用运营商的最终列表,但我正在寻找一种快速的离线方法 对于常见的操作符,我们可以很快记住它们,但是一些不太常用的操作符通常需要查找。使用bpython(或者对于python3使用bpython3) 它类似于普通
\uuuuuuu减法
,\uuuuu减法
,或者实际上是正确的答案\uuuuuu sub
。有没有一种快速的方法可以通过翻译找到答案?我尝试了一些简单的方法,比如help(-)
,但没有成功
有很多在线资源可以提供可用运营商的最终列表,但我正在寻找一种快速的离线方法
对于常见的操作符,我们可以很快记住它们,但是一些不太常用的操作符通常需要查找。使用bpython
(或者对于python3使用bpython3
)
它类似于普通的python repl,但具有完全的优点
例如,我制作代码:
class a:
def __
我会得到一个包含所有内置功能的菜单
你可以通过
或者通过在ubuntu中执行sudo apt get install bpython
。(或sudo-apt-get-install-bpython3
for-python3
此外,它具有完整的选项卡功能,并且更为广泛
一个很好的技巧是使用制表符补全进行猜测。你不记得它是
减号
,子
,减号
,还是其他什么,对吗?所以,首先键入int.\uu m
,然后点击制表符:
In [470]: int.__m
int.__mod__ int.__module__ int.__mro__ int.__mul__
这里没有减号
,所以退格,键入s
,然后再次单击tab:
In [470]: int.__s
int.__setattr__ int.__sub__ int.__subclasshook__
int.__sizeof__ int.__subclasscheck__
int.__str__ int.__subclasses__
这就是。使用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__)
这是一个开始
>>> 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
所有标准操作员
只有基本的
只有数字的
其他帮助小节
在实现该方法之前,您无法执行此操作,在这种情况下,您显然知道它的调用。只需对一个对象执行此操作,您就知道它是有效的。如果您记不起是was
\uuuuuuu减
还是\uuuuu子
。是,打印'\n'。join(dir(1))
可以很好地在int
上列出。可能值得一提的是,ipython更受欢迎和广泛使用,它具有相同的制表符完成功能,就像许多更高级的IDE一样。也可能值得一提的是,制表符完成可以让您尝试猜测。例如,键入int.u m
,th用制表符查看完成情况,看到没有减,退格并尝试s
,然后用制表符查看完成情况,看到有一个子,你就完成了。实际上我大部分时间都是这样做的……这很难解释;让我编辑你的答案,如果你不喜欢,你可以回复。优点是destrobu和Leif Anderson的解决方案之一是,它们甚至适用于不太特殊的dunder方法。例如,如果你记不起pickle
使用了什么,你可以在任何可pickle类型上找到\uuuu reduce\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu>,即使你在特殊方法中找不到>,这绝对是最干净、最简单的方法。(当然,只要你能在多页文本中找到要搜索的内容。)@abarnert“只要你能找到要搜索的内容”:添加了数字的快捷方式,只会有帮助。是的,这绝对有帮助。(你可以在帮助('SPECIALMETHODS')的末尾找到该列表)
,因此您不必记住所有这些。
>>> help('SPECIALMETHODS')
>>> help('BASICMETHODS')
>>> help('NUMBERMETHODS')
>>> help('ATTRIBUTEMETHODS')
>>> help('CALLABLEMETHODS')
>>> help('MAPPINGMETHODS')
>>> help('SEQUENCEMETHODS1')
>>> help('SEQUENCEMETHODS2')