prop()采用1个位置参数,但给出2个

时间:2017-03-09 14:45:05

标签: python-3.x arguments

我正在学习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

2 个答案:

答案 0 :(得分:3)

错误意味着你给函数prop赋予2个参数而不是1.当你在对象(object.function())上调用函数时,它实际上将对象作为参数放置。你需要改变:

def prop(self, func):
    ...

但是还有其他错误,你不能在字符串上调用(self)(在函数new()中)。
但错误意味着你给了很多参数。

答案 1 :(得分:1)

您需要为prop提供self参数。

它隐含地将self作为第一个参数传递,这意味着总共传递了2个参数,即使它看起来只是1。