Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中调用类方法_Python_Methods - Fatal编程技术网

在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():

我希望从不同的类调用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():
    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!谢谢你。