在Python中遇到意外的类行为

问题描述 投票:-1回答:1

我运行了下面的代码;

class A:
    def __init__(self):
        self.f = 1

    def __add__(self, x):
        self.f += x
        return self

    def __radd__(self, x):
        self.f += x
        return self
>>> a = A()
>>> a + 2
<__main__.A object at 0x7f96a90d5700>
>>> a.f == 3
True

# as expected, so far

>>> a = A()
>>> b = A()
>>> a + b
<__main__.A object at 0x7f3d86d7c700>

>>> a.f
<__main__.A object at 0x7f3d86d7cb80>
>>> b.f
2
>>> a.f.f
2
>>> a.f is b
True

刚刚发生了什么?为什么是a.f == bb.f == 2

我不知道这是否是确定的行为,我没有正确解释。

python class
1个回答
3
投票
  1. [C0行在a + b上调用__add__运算符。
© www.soinside.com 2019 - 2024. All rights reserved.