我的代码:
def inner_function(self):
x = "one"
y = "two"
def outer_function(self):
self.inner_function()
print "X is %" % x
print "Y is %" % y
outer_function()
我希望输出为:
>>> X is one
>>> Y is two
我想我并不理解在Python方法/函数中正确使用self
。
我目前正在返回的错误是:TypeError: outer_function() takes exactly 1 argument (0 given)
感谢您的帮助!
答案 0 :(得分:6)
你需要:
def inner_function():
x = "one"
y = "two"
return x, y
def outer_function():
x, y = inner_function()
print "X is %" % x
print "Y is %" % y
outer_function()
self
用于类中的实例方法,但在这里您只是使用独立函数。
或者,对于一个班级:
class MyClass:
def printme(self):
print(self.x)
def mymethod(self):
self.printme()
a = MyClass()
a.x = "One"
b = MyClass()
b.x = "Two"
a.mymethod()
b.mymethod()
将输出:
One
Two
正如您所看到的,您不需要(并且不应该)将self
显式传递给方法 - Python会隐式传递它。当您致电a.mymethod()
时,self
会引用a
,当您致电b.mymethod()
时,self
会引用b
。如果没有此机制,printme()
通过mymethod()
将无法知道要打印哪个对象x
。