gpt4 book ai didi

python - 使用类外部定义的类方法时出错

转载 作者:太空宇宙 更新时间:2023-11-03 16:37:35 25 4
gpt4 key购买 nike

我有一个类,我想在初始化时采用任意方法来根据上下文进行字符串解析。

使用在类外部定义的方法,如下所述:Python define method outside of class definition?

def my_string_method(self):
return self.var.strip()

class My_Class():
def __init__(self, string_method):
self.var = ' foo '
self.string_method = string_method

def use_string_method(self):
return self.string_method()

instance = My_Class(string_method=my_string_method)
print instance.use_string_method()

我收到错误“TypeError:use_string_method() 仅需要 1 个参数(给定 0 个)”。

不应该将 self 参数隐式传递给 use_string_method 吗?有没有办法定义函数来发生这种情况,或者我是否需要将 self 参数显式传递给类外部定义的方法,如下所示:

class My_Class():
def __init__(self, string_method):
self.var = ' foo '
self.string_method = string_method

def use_string_method(self):
return self.string_method(self)

最佳答案

您必须将传入的函数包装在“MethodType”中。

从你的初始化中:

self.string_method = types.MethodType(string_method, self)

这将该方法绑定(bind)到类并允许它接收隐式 self 参数。确保在脚本顶部导入类型

关于python - 使用类外部定义的类方法时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37090644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com