2014-09-23 71 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

相關問題