5

假设我刚刚在 Python 中实现了一些类,并且想重载“-”运算符,但不记得是否需要使用__subtract__,__minus__或者实际上是正确的答案__sub__。有没有一种快速的方法可以通过解释器找到这个?我尝试了简单的事情,help(-)但没有成功。

有大量在线资源可以提供可用运营商的最终列表,但我正在寻找一种快速的离线方法。

对于普通的操作员来说,一个人很快就能记住它们,但一些不太常用的操作员经常需要查找。

4

4 回答 4

9

所有标准运算符

>>> help('SPECIALMETHODS')

只有基本的

>>> help('BASICMETHODS')

只有数字的

>>> help('NUMBERMETHODS')

其他帮助小节

>>> help('ATTRIBUTEMETHODS')
>>> help('CALLABLEMETHODS')
>>> help('MAPPINGMETHODS')
>>> help('SEQUENCEMETHODS1')
>>> help('SEQUENCEMETHODS2')
于 2013-08-22T23:11:45.013 回答
4

使用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__)
于 2013-08-22T22:57:59.387 回答
2

使用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__ 

它就在那里。

于 2013-08-22T22:57:22.490 回答
2

这是一个开始。

>>> 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
于 2013-08-22T23:03:20.663 回答