类中的Python装饰器错误

时间:2016-03-01 04:06:15

标签: python python-decorators

class A(object):
    def wrapped(self, func):
        func.string = self.get_something()
        return func

    def get_something(self):
        return "something"

    @wrapped
    def main(self):
        print self.main.string
a = A()
a.main()
  

TypeError:wrapped()只需要2个参数(给定1个)

1 个答案:

答案 0 :(得分:0)

wrapped()的定义中调用

main()。调用它时,不会给出self,因为A没有wrapped()的实例可以提供给__init__()。要做你想做的事,不要使用装饰器。相反,定义一个分配正确属性的self.main()方法。我不知道为什么你希望它成为self.string的属性。通常,向函数添加属性不是一个好主意。你已经上课了;用它。只需定义self.main.string而不是 int splitSize = 5 String s = "aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooo"; for (int i = 0; i < s.length() / splitSize; i++) { s = s.substring(i, i + 3); }