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


您在方法定义中缺少实例参数:

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

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


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

链接地址: http://www.djcxy.com/p/9189.html

上一篇: Calling a class method in python

下一篇: How does spacy lemmatizer works?