在python中调用一个类方法
我正在寻找从不同的类调用python的方法,如下所示:
class foo():
def bar(name):
return 'hello %s' % name
def hello(name):
a = foo().bar(name)
return a
你好('世界')会返回'Hello World'。 我知道我在这里做错了什么,有人知道它是什么吗? 我认为这可能是我处理课程的方式,但我还没有弄明白。
在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() ,但该方法仅使用一个参数。
您在方法定义中缺少实例参数:
class foo():
def bar(self, name):
return 'hello %s' % name
或者如果您不打算使用foo实例的任何部分将该方法声明为静态方法。 这里的差异有一个很好的解释。
如果它应该是一个类方法,那么你应该使用classmethod装饰器和一个cls参数来bar 。 但是在这种情况下这没有意义,所以你可能想要一个staticmethod 。
