我正在学习python,我试图测试一些东西来理解@property ...... 这是我的代码:
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
答案 0 :(得分:3)
错误意味着你给函数prop
赋予2个参数而不是1.当你在对象(object.function()
)上调用函数时,它实际上将对象作为参数放置。你需要改变:
def prop(self, func):
...
但是还有其他错误,你不能在字符串上调用(self)
(在函数new()中)。
但错误意味着你给了很多参数。
答案 1 :(得分:1)
您需要为prop
提供self
参数。
它隐含地将self
作为第一个参数传递,这意味着总共传递了2个参数,即使它看起来只是1。