pythonreplace回调函数_Python在类中传递回调函数

我必须尝试从基于非类的编码风格转变为基于类的编码风格,但面临一个问题. optimize()函数采用回调函数mycallback().代码在非基于类的方法中完美地运行,但是当我将它移动到基于类的方法时,我得到一个错误“mycallback()正好接受3个参数(给定1个)”.

在基于类的方法中传递回调函数的正确方法是什么?

(A)非基于类别的方法:

def mycallback(model, where):

pass

model = Model()

model.optimize(mycallback)

(B)基于类别的方法:

class A:

def __init__(self):

self.model = Model()

def solve(self):

# Try method 1:

self.model.optimize(self.mycallback())

# Try method 2:

# self.model.optimize(self.mycallback)

def mycallback(self, model, where):

pass

虽然这是一个关于将回调函数传递给Gurobi(一个优化求解器)内置函数的问题,但我认为这是一个关于如何将类中定义的回调函数传递给Python中的另一个函数的更一般的问题.

方法2的错误:

self.model.optimize(self.mycallback)

File "model.pxi", line 458, in gurobipy.Model.optimize (../../src/python/gurobipy.c:34263)

gurobipy.GurobiError: Callback argument must be a function

看起来很可能是Gurobi API问题.不知道是否有任何Gurobi开发者会做出回应.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值