2017-03-09 21 views
1

我正在學習Python和我試圖測試一些瞭解@property ... 這是我的代碼:道具()需要1周位置的說法,但分別給予2

class Thing: 

    def __init__(self, my_word=None): 
     self._word = my_word 

    def word(self): 
     return self._word 

    def prop(func): 
     def new(): 
      return func(self) 
     return new() 



thing = Thing('Im here') 
thing.prop(thing.word) 

我剛剛得到這個錯誤和它對我有點困惑。

Traceback (most recent call last): 
    File "E:/python projs/1/1.py", line 17, in <module> 
    thing.prop(thing.word) 
builtins.TypeError: prop() takes 1 positional argument but 2 were given 

回答

3

錯誤意味着您給函數prop而不是1提供了2個參數。當您在對象上調用函數時(object.function()),它實際上將該對象放置爲參數。您需要更改:

def prop(self, func): 
    ... 

但有其他錯誤,你不能在一個字符串調用(self)(在功能新的())。
但錯誤意味着你給了很多參數。

1

您需要給prop一個self參數。

它含蓄地傳遞self作爲第一個參數,這意味着2個參數被傳遞總,即使它只是看起來像1。

+0

現在我想這...什麼都沒有解決 –

+0

@shiyonsufa嗯,這可能解決了原來的錯誤。是否有其他問題是一個不同的故事。 – Carcigenicate

相關問題