我期待調用蟒蛇的方法從不同的類,像這樣:調用一個類的方法在python
class foo():
def bar(name):
return 'hello %s' % name
def hello(name):
a = foo().bar(name)
return a
你好在哪裏(「世界」)將返回的「Hello World」。我知道我在這裏做錯了什麼,有人知道它是什麼嗎?我認爲這可能是我處理課程的方式,但我還沒有弄明白。
我期待調用蟒蛇的方法從不同的類,像這樣:調用一個類的方法在python
class foo():
def bar(name):
return 'hello %s' % name
def hello(name):
a = foo().bar(name)
return a
你好在哪裏(「世界」)將返回的「Hello World」。我知道我在這裏做錯了什麼,有人知道它是什麼嗎?我認爲這可能是我處理課程的方式,但我還沒有弄明白。
在Python中,非靜態方法明確採用self
作爲它們的第一個參數。
foo.bar()
要麼需要一個靜態方法:
class foo():
@staticmethod
def bar(name):
return 'hello %s' % name
或已採取self
的第一個參數:
class foo():
def bar(self, name):
return 'hello %s' % name
什麼情況是,在你的代碼,name
被解釋爲self
參數(這恰好被稱爲別的東西)。當您撥打foo().bar(name)
時,Python會嘗試將兩個參數(self
和name
)傳遞給foo.bar()
,但該方法只需要一個參數。
謝謝,我只做過最小的python!不過謝謝。 –
你缺少實例參數在你的方法定義:
class foo():
def bar(self, name):
return 'hello %s' % name
或者,如果你不打算使用foo
實例的任何部分聲明方法的靜態方法。差異here之間有一個很好的解釋。
如果它應該是一個類方法,那麼您應該使用classmethod
裝飾器和參數bar
。但在這種情況下這沒有意義,所以你可能想要一個staticmethod
。
而一個'classmethod'具有這個類(通常稱爲'cls')作爲第一個參數,所以你也必須添加它。 – delnan
你錯過了實例參數,通常命名爲self
:
class foo():
def bar(self, name):
return 'hello %s' % name
我使用python 2.7,我認爲有一些語法錯誤在你的代碼, – lostyzd
我們是2.5,而不是一個語法問題這是'自我'問題,回答大約4倍以下;) –