代码之家  ›  专栏  ›  技术社区  ›  Austin Richardson

python int没有iadd()方法?

  •  4
  • Austin Richardson  · 技术社区  · 14 年前

    >>> a = 5
    >>> a.__radd__(5)
    10
    >>> a
    5
    >>> a.__iadd__(5)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'int' object has no attribute '__iadd__'
    

    出于好奇,如果int对象没有 __iadd__ ,那么 +=

    2 回复  |  直到 14 年前
        1
  •  6
  •   S.Lott    14 年前

    出于好奇,如果int对象没有 __iadd__ ,那么,+=如何工作?

    a += 5
    

    变成

    a = a + 5
    

    __iadd公司__ 对于不可变对象。

    a = a.__add__( 5 )
    

    工作很好。一个新的int对象是由 __add__ .

    http://docs.python.org/reference/datamodel.html#coercion-rules .

        2
  •  3
  •   Paulo Scardine    14 年前

    如果一个对象没有 __iadd__ , __add__ __iadd公司__ 被认为是一个优化的地方 __添加__ 案例,它不是强制性的。