误解了类和定义
问题描述:
我一直在考虑这两个类定义:误解了类和定义
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未定义”,但我认为x
和y
是我们放入函数的参数。我错过了什么?
答
在您的第一堂课中,x
和y
是构造函数参数。 他们无法在此范围之外访问。
在getX
函数中,x
不存在。您需要从self
参考中检索它,例如在第二堂课中。
你写了'return x',而不是'return self.x'。 –
'x'和'y'是'Weird .__ init__'中的本地人。这意味着它们不存在该函数的外部*。 'Weird.getX'和'Weird.getY'是具有独立名称空间的独立函数。 –
'x'和'self.x'有什么区别? – alexqwx