Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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
向类中添加方法在python3.7.0中不起作用,而在Python2.7中同样起作用_Python_Python 3.x_Python 2.7 - Fatal编程技术网

向类中添加方法在python3.7.0中不起作用,而在Python2.7中同样起作用

向类中添加方法在python3.7.0中不起作用,而在Python2.7中同样起作用,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,下面是我的代码,它适用于python 2,而不是python 3, 添加了一些小改动,使语法与python3兼容。 请帮忙。 我得到的错误是 TypeError:get()缺少1个必需的位置参数:“self” 我把这个方法称为 client = HelloClient() response = client.print_hello() 这里的主要问题是,您混合了Python2中旧的未绑定方法,这些方法是在Python3中删除的。 由于python 3类不再将其函数公开为未绑定方法,因此运行以下

下面是我的代码,它适用于python 2,而不是python 3, 添加了一些小改动,使语法与python3兼容。 请帮忙。 我得到的错误是

TypeError:get()缺少1个必需的位置参数:“self”

我把这个方法称为

client = HelloClient()
response = client.print_hello()

这里的主要问题是,您混合了Python2中旧的
未绑定方法,这些方法是在Python3中删除的。
由于python 3类不再将其函数公开为
未绑定方法
,因此运行以下代码段:

class A:
  def f(self):
    pass

type(A.f)
在Python3中提供
函数
,在python2中提供
。通过python 3中的这种简化,类不再像您所期望的那样具有正确的机制来处理
MethodType

解决方案是只向类中添加一个简单的函数(
\u build\u method
result)


在这种特定情况下,解决方案将发生变化:

setattr(HelloClient, api_method.name, MethodType(_build_method(api_method.path, api_method.http_method, api_method.query_params or []), HelloClient)
进入:


这里的主要问题是,您混合了Python2中旧的
未绑定方法,这些方法是在Python3中删除的。
由于python 3类不再将其函数公开为
未绑定方法
,因此运行以下代码段:

class A:
  def f(self):
    pass

type(A.f)
在Python3中提供
函数
,在python2中提供
。通过python 3中的这种简化,类不再像您所期望的那样具有正确的机制来处理
MethodType

解决方案是只向类中添加一个简单的函数(
\u build\u method
result)


在这种特定情况下,解决方案将发生变化:

setattr(HelloClient, api_method.name, MethodType(_build_method(api_method.path, api_method.http_method, api_method.query_params or []), HelloClient)
进入:


您正在将该方法添加到类对象中。我找不到向类中添加实例方法的方法,所以我使用了元类,正如您从感谢的建议中所看到的,您正在向类对象添加方法。我找不到向类中添加实例方法的方法,所以我使用了元类,正如您从Thank for the SuggestionThank中看到的那样。有点困惑,请用一个例子来帮助我,我会非常有用的谢谢你的信息。对此有点困惑,请举例说明,这将非常有帮助