【问题标题】:How can I solve TypeError: unsupported operand type(s) for *: 'property' and 'property'如何解决 TypeError: unsupported operand type(s) for *: 'property' and 'property'
【发布时间】:2021-05-19 12:10:39
【问题描述】:

我尝试通过在 Python 中的 for 循环中通过索引和列名检索任意两行的值来进行计算,但弹出了 TypeError。 IRdelta_WS_agg 是一个命名元组列表,ws1.WS 和 ws2.WS 没有被正确读取。有没有人有想法解决这个问题?非常感谢!

for bucket in buckets:
    for ws1 in IRdelta_WS_agg:
        for ws2 in IRdelta_WS_agg:
            correl = get_ir_delta_phi_rho(ws1.RiskType, ws1.Curve, ws1.Tenor,
                                        ws2.RiskType,ws2.Curve, ws2.Tenor)
            variance = ws1.WS * ws2.WS * correl
            K += variance
    variance = ws1.WS * ws2.WS * correl
TypeError: unsupported operand type(s) for *: 'property' and 'property'

【问题讨论】:

  • get_ir_delta_phi_rh 和 WS 是如何定义的?
  • WS 属于某些不支持* 运算符的数据类型

标签: python for-loop typeerror


【解决方案1】:

首先你应该检查ws1.WS的类型

type(IRdelta_WS_agg[0])
type(IRdelta_WS_agg[0].WS)

如果是你的custom data type

你应该定义魔法方法

def __mul__(self, other):
    return int(self.XXX) * int(other.XXX)

或者你可以使用

__repr____str__

制作一串数字

然后在乘法之前更改类型,例如:

int(ws1.WS) * float(ws2.WS)

if you need more help
you should provide more info about their data types or class object

【讨论】:

    猜你喜欢
    • 2021-09-12
    • 1970-01-01
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    • 2020-10-01
    • 2018-11-30
    • 2023-04-02
    • 2017-07-17
    相关资源
    最近更新 更多