误解了类和定义

问题描述:

我一直在考虑这两个类定义:误解了类和定义

class Weird(object): 
    def __init__(self, x, y): 
     self.y = y 
     self.x = x 
    def getX(self): 
     return x 
    def getY(self): 
     return y 

class Wild(object): 
    def __init__(self, x, y): 
     self.y = y 
     self.x = x 
    def getX(self): 
     return self.x 
    def getY(self): 
     return self.y 

X = 7 
Y = 8 

前两个问题都很好;他们只是问

w2 = Wild(X, Y) 
print(w2.getX()) 

(也就是7)和

print(w2.getY())

什么让我困惑的问题

w1 = Weird(X, Y) 
print(w1.getX()) 

print(w1.getY())

他们的答案显然都是“错误”,但我不明白为什么会出现这种情况。给出的错误分别是“x未定义”和“y未定义”,但我认为xy是我们放入函数的参数。我错过了什么?

+0

你写了'return x',而不是'return self.x'。 –

+0

'x'和'y'是'Weird .__ init__'中的本地人。这意味着它们不存在该函数的外部*。 'Weird.getX'和'Weird.getY'是具有独立名称空间的独立函数。 –

+0

'x'和'self.x'有什么区别? – alexqwx

在您的第一堂课中,xy是构造函数参数。 他们无法在此范围之外访问。

getX函数中,x不存在。您需要从self参考中检索它,例如在第二堂课中。