对于错误,请执行以下操作:
TypeError: takes exactly 1 argument (2 given)
使用以下类方法:
def extractAll(tag):
...
并将其称为:
e.extractAll("th")
当我给它一个参数时,这个错误看起来非常奇怪,这个方法应该只有一个参数,但它说我没有给它一个参数……我知道这个问题可以通过将self
添加到方法原型中来解决,但我想知道错误背后的原因。
我得到它是因为通过e.
extractAll("th")调用它的行为也作为参数传入了self
吗?如果是这样的话,通过删除调用中的self
,我会使它成为某种可以像Extractor.extractAll("th")
一样调用的类方法吗
发布于 2011-08-18 02:04:11
如果一个非静态方法是一个类的成员,你必须这样定义它:
def Method(self, atributes..)
所以,我假设你的'e‘是某个类的实例,这个类的实现方法试图执行,并且有太多的参数。
发布于 2014-06-12 04:13:46
总结(如何在python的类中定义方法的一些示例)
#!/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(...))
示例
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")`
发布于 2013-07-23 22:11:47
尝试使用:
def extractAll(self,tag):
关注自我
https://stackoverflow.com/questions/4909585
复制相似问题