为什么我在Python中得到这个结果?

时间:2017-11-14 20:58:32

标签: python

class A:
    def __init__ (self, an_int):
        self.g = an_int
        self.b = None

    def add (self, an_int):
        self.g += an_int + 1

class B:
    def __init__ (self, an_int):
        self.g = an_int
        self.a = None

    def subtract (self, an_int):
        self.g -= an_int-1

a = A(0)
b = B(1)

def show (an_a_obj, a_b_obj):
    print '%d %d' % (an_a_obj.g, a_b_obj.g)

现在,我这样做:

b.subtract(a.g)
show(a,b)

我得到的结果是0 2,但我认为应该是:

0 0

但这绝对不是真的。我不明白的是这一部分:

def subtract (self, an_int):
    self.g -= an_int-1

因此,a.g被视为" an_int"然后取出,但作为什么?它根本不是全球性的,那么口译员怎么知道 a.g 必须 0 或者根本不知道呢?

self.g -= an_int - 1做了什么?

我希望它的b.g(1) - 0(a.g) - 1 = 0,但口译员说它是-1

有人可以帮助我朝正确的方向发展吗?

1 个答案:

答案 0 :(得分:1)

self.g -= an_int - 1相当于self.g = self.g - (an_int - 1),即self.g = self.g + 1 - an_int。由于您的示例中an_int为0,因此self.g增加1。