在python中调用类方法
我希望从不同的类调用python中的方法,如下所示:在python中调用类方法,python,methods,Python,Methods,我希望从不同的类调用python中的方法,如下所示: class foo(): def bar(name): return 'hello %s' % name def hello(name): a = foo().bar(name) return a 其中hello('world')将返回'hello world'。我知道我做错了什么,有人知道是什么吗?我想这可能是我处理类的方式,但我还没有弄清楚。方法定义中缺少实例参数: class foo():
class foo():
def bar(name):
return 'hello %s' % name
def hello(name):
a = foo().bar(name)
return a
其中hello('world')将返回'hello world'。我知道我做错了什么,有人知道是什么吗?我想这可能是我处理类的方式,但我还没有弄清楚。方法定义中缺少实例参数:
class foo():
def bar(self, name):
return 'hello %s' % name
或者,如果您不打算使用
foo
实例的任何部分,请将该方法声明为静态方法。有一个很好的解释说明了这些差异。方法定义中缺少实例参数:
class foo():
def bar(self, name):
return 'hello %s' % name
或者,如果您不打算使用
foo
实例的任何部分,请将该方法声明为静态方法。这两者之间有一个很好的解释。在Python中,非静态方法明确地将self
作为它们的第一个参数。
foo.bar()
class foo():
@staticmethod
def bar(name):
return 'hello %s' % name
或者必须将self
作为其第一个参数:
class foo():
def bar(self, name):
return 'hello %s' % name
发生的情况是,在代码中,name
被解释为self
参数(该参数恰好被称为其他参数)。调用foo().bar(name)
时,Python尝试将两个参数(self
和name
)传递给foo.bar()
,但该方法只接受一个参数。在Python中,非静态方法显式地将self
作为其第一个参数。
foo.bar()
class foo():
@staticmethod
def bar(name):
return 'hello %s' % name
或者必须将self
作为其第一个参数:
class foo():
def bar(self, name):
return 'hello %s' % name
发生的情况是,在代码中,name
被解释为self
参数(该参数恰好被称为其他参数)。调用foo().bar(name)
时,Python尝试将两个参数(self
和name
)传递给foo.bar()
,但该方法只需要一个参数。如果它应该是一个类方法,那么您应该使用decorator和cls
参数传递给bar
。但是在这种情况下,这没有任何意义,因此您可能需要一个替代。如果它应该是一个类方法,那么您应该使用decorator和cls
参数来设置bar
。但在这种情况下,这没有任何意义,因此您可能需要一个实例参数来代替。您遗漏了实例参数,通常名为self
:
class foo():
def bar(self, name):
return 'hello %s' % name
您遗漏了实例参数,通常名为self
:
class foo():
def bar(self, name):
return 'hello %s' % name
classmethod
将类(通常称为cls
)作为第一个参数,所以您也必须添加它。而classmethod
将类(通常称为cls
)作为第一个参数,所以您也必须添加它。我使用的是python 2.7,我认为您的代码中有一些语法错误,我们使用的是2.5,不是语法问题——这是“自我”问题,回答如下4次;)我使用的是Python2.7,我认为您的代码中有一些语法错误,我们使用的是2.5,不是语法问题。这是“自我”问题,下面回答了大约4次;)谢谢,我过去只做过最简单的python!不过谢谢。谢谢,我过去只做过最简单的python!谢谢你。