【问题标题】:TypeError: method() takes exactly 2 arguments (3 given) [duplicate]TypeError:method() 正好采用 2 个参数(给定 3 个)[重复]
【发布时间】:2015-05-15 10:00:03
【问题描述】:

这是一个代码:

class Child(object):
    def chunks(l, n):
        """ Yield successive n-sized chunks from l.
        """
        for i in xrange(0, len(l), n):
            yield l[i:i+n]

k= range(1, 10)
print k
print Child().chunks(k,2)

当我执行这段代码时,python 抛出以下错误:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

Traceback(最近一次调用最后一次):

文件 “/home/Sample.py”,第 19 行,在

打印 Child().chunks(k,2)

TypeError: chunks() 只需要 2 个参数(给定 3 个)

请找到我的sn-p!

【问题讨论】:

  • def chunks(self, l, n):
  • @Kay TypeError: chunks() 只需要 2 个参数(给定 3 个),我需要一个解释
  • self 是自动传递的,因此您实际上是将 (self, k, 2)(3 个参数)传递给 chunks 方法,但它被定义为接受 (l, n)(2 个参数),因此错误。编辑 Kay 的答案,自己看看!
  • @Matthew 谢谢。让我试试……
  • chunks 显然不需要Child 中;让它成为一个函数。

标签: python python-2.7


【解决方案1】:

实例方法:在类内部定义的方法,只属于类的当前实例。

chunks方法定义为类中的实例方法。

e.d

class Child(object):
    def chunks(self, l, n):
        #      ^^^   
        pass
        # do coding

Static Method

class Child(object):
    @staticmethod
    def chunks(l, n):
        pass
        # do coding

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 2016-09-01
    相关资源
    最近更新 更多