Python将类方法作为参数的默认值传递给另一个类初始化

2024-10-06 08:32:22 发布

您现在位置:Python中文网/ 问答频道 /正文

修改原问题以防混淆。我在两个不同的模块中定义了两个类:

class Heuristic:
    def process(self,data,x,y):
        processed_data = (data + x) /y 
        return processed_data

class GTS(Abstract_Strat):
    def __init__(self, data, method= Heuristic().process(),*args):
        self.data= data
        self.method = method
        self.func_args = args

所以在类GTS中,在初始化函数中,我试图传递一个属于另一个模块中的类启发式的方法。尝试此操作时,出现以下错误:

TypeError: process() takes exactly 3 arguments (1 given)

我搜索了stackoverflow,并在Typerror引用_init_方法的地方找到了类似的问题。但在本例中,错误是作为参数传递给_init_方法的函数。所以问题是-将一个类的方法作为默认参数值传递给另一个类的初始化器的正确方法是什么?你知道吗


Tags: 模块方法函数selfdatainitdef错误
2条回答

通过将Heuristic().process()更改为Heuristic().process作为函数参数的默认值传递,我解决了上面修改的问题中提到的问题。你知道吗

我还要感谢安德鲁对问题原版的评论。你知道吗

在python中,必须先构造类的实例,然后才能访问对象及其方法。你知道吗

你可以这样做:

class GTS(Abstract_Strat):
    heuristic = Heuristic(data)
    def __init__(self, data, method= heuristic.process(),*args):
        self.data= data
        self.method = method
        self.func_args = args

从而构造对象并访问其“绑定”方法。它引用的第一个参数是定义中的“self”,在初始化类的实例之前,您无权访问它。你知道吗

相关问题 更多 >