如何使用Python从另一个函数中调用一个函数?
问题描述:
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)
感谢您的帮助!
答
您需要:
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
。
谢谢。就我所知,一种方法是当一个函数与一个类相关联时。然后,为了编写一个方法,我需要引用该方法的类类,这就是为什么当我构造方法时将self.method()和def method_name(self):'放在一起的原因? – YPCrumble 2014-09-23 03:58:01
你会使用'self.method()'从同一个类中的另一个方法调用一个方法。在课堂之外,你可以创建一个对象,然后调用该方法,例如'var = MyClass()'后面加'var.method()'。每个有“自我”参数的方法的要点是,在类本身内部,你不知道它可能被调用哪个对象,所以你需要一种方法来引用当前对象是什么,这就是自我'是一个参考。独立函数不与对象相关联,所以'self'会不合适。 – 2014-09-23 03:59:03