2013-02-04 23 views
-2

每次我打電話給我的功能def hello(self,value)我收到一個錯誤:takes exactly 2 arguments (1 given)那麼我該怎麼辦?包含自我需要2個參數(1給定)

還有另外一種可能性:self.statusitem.setImage_(self.iconsuccess)

編輯:

的我的代碼

Class A: 
    func_in_class_B(value) 

Class B: 
def finishLaunching(self): 
    self.statusitem.setImage_(self.icon) 
def func_in_class_B(self,value) 
    self.statusitem.setImage_(self.iconsuccess) 

A類

簡單表示是後臺線程和B類我的主線程,我想操縱`self.statusitem.setImage_(self.icon )

+4

你怎麼稱呼'你好'? – gefei

+0

我想你將需要向我們展示比這更多的代碼。 「hello」如何與'self.statusitem.setImage _(...)'排隊?這些想法如何連接? hello被定義爲一個類的方法,還是一個常規函數? – mgilson

+0

添加了我的代碼的簡單表示 –

回答

3

這聽起來像你沒有正確地調用你的hello函數。考慮下面的類定義:

class Widget(object): 
    def hello(self, value): 
     print("hello: " + str(value)) 

你可能會調用它像這樣的靜態函數:

Widget.hello(10) 

這意味着沒有一個widget類的實例被作爲第一個參數傳遞。您需要可以設立Hello功能是靜態的:

class Widget(object): 
    @staticmethod 
    def hello(value): 
     print("hello: " + str(value)) 

Widget.hello(10) 

或稱之爲特定對象是這樣的:

widget = Widget() 
widget.hello(10) 
+2

刪除'self'引用作爲第一個參數不會使該函數成爲靜態,self只是第一個參數的名稱。使用'staticmethod'裝飾器代替 – Kos

+0

@Kos ahh,我從來不必在python中設置靜態函數。隨時編輯答案,使其準確。 –

1

這是最有可能是因爲您的招呼函數不是類成員。在這種情況下,您不需要在方法聲明中提供自我......即,而不是你好(個體經營,價值)只是打個招呼(值)

比如......這個片段的作品精絕

def hello(value): 
    print 'Say Hello to ' + value 

hello('him') 

如果不是這種情況,那麼請提供您的代碼段來幫助你進一步。

相關問題