在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
。