首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >有趣的‘只接受1个参数(给出2个)’Python错误

有趣的‘只接受1个参数(给出2个)’Python错误
EN

Stack Overflow用户
提问于 2011-02-06 04:54:19
回答 3查看 116.7K关注 0票数 61

对于错误,请执行以下操作:

代码语言:javascript
复制
TypeError: takes exactly 1 argument (2 given)

使用以下类方法:

代码语言:javascript
复制
def extractAll(tag):
   ...

并将其称为:

代码语言:javascript
复制
e.extractAll("th")

当我给它一个参数时,这个错误看起来非常奇怪,这个方法应该只有一个参数,但它说我没有给它一个参数……我知道这个问题可以通过将self添加到方法原型中来解决,但我想知道错误背后的原因。

我得到它是因为通过e.extractAll("th")调用它的行为也作为参数传入了self吗?如果是这样的话,通过删除调用中的self,我会使它成为某种可以像Extractor.extractAll("th")一样调用的类方法吗

EN

回答 3

Stack Overflow用户

发布于 2011-08-18 02:04:11

如果一个非静态方法是一个类的成员,你必须这样定义它:

代码语言:javascript
复制
def Method(self, atributes..)

所以,我假设你的'e‘是某个类的实例,这个类的实现方法试图执行,并且有太多的参数。

票数 28
EN

Stack Overflow用户

发布于 2014-06-12 04:13:46

总结(如何在python的类中定义方法的一些示例)

代码语言:javascript
复制
#!/usr/bin/env python   # (if running from bash)

class Class1(object):

    def A(self, arg1):
        print arg1
        # this method requires an instance of Class1   
        # can access self.variable_name, and other methods in Class1

    @classmethod
    def B(cls, arg1):
        cls.C(arg1)
        # can access methods B and C in Class1 

    @staticmethod
    def C(arg1):
        print arg1
        # can access methods B and C in Class1 
        # (i.e. via Class1.B(...) and Class1.C(...))

示例

代码语言:javascript
复制
my_obj=Class1()

my_obj.A("1")
# Class1.A("2") # TypeError: method A() must be called with Class1 instance

my_obj.B("3")
Class1.B("4")
my_obj.C("5")
Class1.C("6")`
票数 4
EN

Stack Overflow用户

发布于 2013-07-23 22:11:47

尝试使用:

代码语言:javascript
复制
def extractAll(self,tag):

关注自我

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4909585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档