在python中调用类方法

时间:2011-10-07 15:58:44

标签: 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'。我知道我在这里做错了什么,有谁知道它是什么?我认为这可能是我处理课程的方式,但我还没有理解它。

4 个答案:

答案 0 :(得分:6)

在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会尝试将两个参数(selfname)传递给foo.bar(),但该方法只需要一个。

答案 1 :(得分:3)

您缺少方法定义中的instance参数:

class foo():
    def bar(self, name):
        return 'hello %s' % name

或者如果您不打算使用foo实例的任何部分,则将该方法声明为静态方法。差异here之间有一个很好的解释。

答案 2 :(得分:3)

如果它应该是一个类方法,那么你应该使用classmethod装饰器和cls参数bar。但在这种情况下这没有任何意义,所以你可能想要一个staticmethod

答案 3 :(得分:3)

您错过了实例参数,通常名为self

class foo():
    def bar(self, name):
        return 'hello %s' % name