首页 > 解决方案 > 为什么我会得到这个:“TypeError:myfunc() 只需要 1 个参数(给定 0)”?

问题描述

我想要做的是当字典this_dict被调用时,它应该执行myfunc它检查函数被调用的次数并在这方面改变输出。

虽然每当我执行它时,我都会收到错误TypeError: myfunc() takes exactly 1 argument (0 given)。我不确定为什么会这样。

class A(object):
    this_dict = {}

    def get_response(self, request):
        response = self.this_dict[request]
        if callable(response):
            response = response(self, request)

        print response

class B(A):
    b= 'b'
    c= 'c'
    tries = 1
    
    def myfunc(self):
        self.tries += 1
        if self.tries < 3:
            return self.b
        else:
            return self.c
        
    this_dict = {
        'a': myfunc(),
        'd': 'some_string1',
        'e': 'some_string2',
        'f': 'some_string3',
    }

b = B()
b.get_response('a')

标签: pythonpython-2.7

解决方案


我认为这是正确的做法。定义时,def myfunc()我需要包含selfandrequest作为该方法的参数。它对我有用:

class A(object):
    this_dict = {}

    def get_response(self, request):
        response = self.this_dict[request]
        if callable(response):
            response = response(self, request)

        print response

class B(A):
    b= 'b'
    c= 'c'
    tries = 1
    
    def myfunc(self, request):
        self.tries += 1
        if self.tries < 3:
            return self.b
        else:
            return self.c
        
    this_dict = {
        'a': myfunc,
        'd': 'some_string1',
        'e': 'some_string2',
        'f': 'some_string3',
    }

b = B()
b.get_response('a')

推荐阅读