首页 > 解决方案 > AttributeError:“NoneType”对象没有属性“get_values”

问题描述

我是编码新手,需要你的帮助。我收到以下错误:

line 159, in _get_solution
    xs = np.array(ms.get_values(self.int_var)).reshape(self.path_n, self.orderbook_n)
AttributeError: 'NoneType' object has no attribute 'get_values'

到达这部分代码后:

line 159, in _get_solution
    xs = np.array(ms.get_values(self.int_var)).reshape(self.path_n, self.orderbook_n)

当我使用:print(dir(ms))检查可能导致这种情况的原因时,它给了我以下信息:

['__bool__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']

我怎样才能继续让代码运行?

这部分的完整代码是:

def _get_solution(self):
    '''function to solve the optimization model, save result and print outputs'''
    self.print_content = ''
    self.trade_solution = OrderedDict()
    ms = self.solve()
    xs = np.array(ms.get_values(self.int_var)).reshape(self.path_n, self.orderbook_n)
    zs = xs * self.precision_matrix
    nonzeroZ = list(zip(*np.nonzero(zs)))
    nonzeroZ = sorted(nonzeroZ, key=lambda x: x[0])

标签: pythoncplexdocplex

解决方案


该错误告诉您该变量ms已评估为None,这就是它没有get_values()方法的原因。

假设错误消息中的第 159 行是 中的对应行_get_solution(),这意味着在上面的行中

ms = self.solve()

调用self.solve()返回None

您需要检查self.solve()以了解它为什么这样做。

由于您是 Python 新手,请记住,当函数或方法没有 return 语句,或者从未到达有效的 return 语句时,它将None默认返回。


推荐阅读