【发布时间】:2017-09-11 15:36:03
【问题描述】:
我已经得到了这两个类的定义:
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 是我们放入函数的参数。我错过了什么?
【问题讨论】:
-
你写的是
return x,而不是return self.x。 -
x和y是Weird.__init__的本地人。这意味着它们不存在于该函数的之外。Weird.getX和Weird.getY是具有不同命名空间的独立函数。 -
x和self.x有什么区别? -
Wild使用self对象(对您当前实例的引用)来访问其属性。这就是您在不同方法之间共享信息的方式,它们都共享一个self实例,该实例会自动传递给方法。self.x和self.y存在只是因为__init__设置了这些。 -
最后,Python 教程:docs.python.org/3/tutorial/classes.html