【问题标题】:Why doesn't 2.__add__(3) work in Python?为什么 2.__add__(3) 在 Python 中不起作用?
【发布时间】:2021-03-23 13:43:54
【问题描述】:

整数2 有一个__add__ 方法:

>>> "__add__" in dir(2)
True

...但调用它会引发 SyntaxError:

>>> 2.__add__(3)
  File "<stdin>", line 1
    2.__add__(3)
            ^
SyntaxError: invalid syntax

为什么我不能使用__add__ 方法?

【问题讨论】:

  • 这个主题的变体是这里比较常见的问题。这很有趣,虽然我真的看不出你为什么要这样做,而不仅仅是2 + 3
  • @mgilson: (2).__add__ 可以用作“加二”功能,而不是 lambda x: x+2
  • @unutbu -- 有趣。我想这将是一个聪明的(不太容易阅读?)的方式来做到这一点......不过这是一个好点。我想我会在未来寻找它!
  • @unutbu:我宁愿使用functools.partial(operator.add, 2)
  • @MartijnPieters:你是根据什么做出这个选择的?

标签: python methods int syntax-error


【解决方案1】:

2. 被解析为浮点数,因此 2.__add__ 是 SyntaxError。

你可以评价

改为(2).__add__(3)


In [254]: (2).__add__(3)
Out[254]: 5

【讨论】:

    【解决方案2】:

    避免2. 被解析为浮点数的另一种方法是在2. 之间插入一个空格

    >>> 2 .__add__(3)
    5
    

    【讨论】:

      猜你喜欢
      • 2017-06-17
      • 1970-01-01
      • 2013-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多