向类中添加方法在python3.7.0中不起作用,而在Python2.7中同样起作用
下面是我的代码,它适用于python 2,而不是python 3, 添加了一些小改动,使语法与python3兼容。 请帮忙。 我得到的错误是 TypeError:get()缺少1个必需的位置参数:“self” 我把这个方法称为向类中添加方法在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类不再将其函数公开为未绑定方法,因此运行以下
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中看到的那样。有点困惑,请用一个例子来帮助我,我会非常有用的谢谢你的信息。对此有点困惑,请举例说明,这将非常有帮助