2017-11-14 2 views
0
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) 

Nun, ich dies tun:Warum bekomme ich dieses Ergebnis in Python?

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

Was ich als Ergebnis bin immer, ist 0 2, aber ich würde denken, es sein sollte:

0 0 

Aber das ist definitiv nicht wahr. Was ich nicht verstehe, ist dieser Teil:

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

So wird a.g als „an_int“ gesehen zu werden und dann geholt, sondern als das, was? Es ist überhaupt nicht global, also wie kann der Interpreter wissen, dass a.g sein muss oder weiß es überhaupt nicht?

Und was macht self.g -= an_int - 1?

Ich würde erwarten, es b.g (1) - 0 (A. G) - 1 = 0, aber der Dolmetscher sagt, es ist -1

jemand mir in der richtigen Richtung helfen könnte?

+2

Sie übergeben 'a.g', die 0 wert ist, um Ihre Subtraktionsfunktion. B.g ist 1 wert und du subtrahierst -1 => 2 –

+1

Ahhh, vielen Dank! – Siyah

Antwort

1

self.g -= an_int - 1 entspricht self.g = self.g - (an_int - 1), das ist self.g = self.g + 1 - an_int. Da an_int in Ihrem Beispiel 0 ist, wird self.g um 1 erhöht.

+0

Habe es jetzt. Danke, ich weiß das zu schätzen! – Siyah

Verwandte Themen