2014-09-23 73 views
0

我的代码:如何使用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)感谢您的帮助!

回答

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

+1

谢谢。就我所知,一种方法是当一个函数与一个类相关联时。然后,为了编写一个方法,我需要引用该方法的类类,这就是为什么当我构造方法时将self.method()和def method_name(self):'放在一起的原因? – YPCrumble 2014-09-23 03:58:01

+1

你会使用'self.method()'从同一个类中的另一个方法调用一个方法。在课堂之外,你可以创建一个对象,然后调用该方法,例如'var = MyClass()'后面加'var.method()'。每个有“自我”参数的方法的要点是,在类本身内部,你不知道它可能被调用哪个对象,所以你需要一种方法来引用当前对象是什么,这就是自我'是一个参考。独立函数不与对象相关联,所以'self'会不合适。 – 2014-09-23 03:59:03

相关问题