Python中类中的嵌套方法

2024-06-01 00:04:46 发布

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

我正在使用一个名为CVX的优化软件包。它有这些“原子”,它们接受一个CVX表达式并构造一个新的CVX表达式。一个例子是trace原子来计算矩阵的轨迹

我想我需要下面的代码来创建一个CVX变量(一个n乘n的矩阵)并计算它的轨迹

X = cvxpy.Variable((n,n))
tr = cvxpy.atoms.affine.trace.trace(X)

这确实有效,但同样有效的是

X = cvxpy.Variable((n,n))
tr = cvxpy.trace(X)

为什么第二种选择有效?一般来说,当有一个具有嵌套方法的类时,如何在Python中直接调用内部方法


Tags: 方法代码表达式轨迹trace矩阵variabletr
1条回答
网友
1楼 · 发布于 2024-06-01 00:04:46

我不会一概而论这种行为。几乎可以肯定,这是设计完成的。很可能自民党不想在追溯层级时过于冗长,所以给了你这个捷径。也有可能(很可能)直接针对cvxpy对象的.trace作用于该对象本身,而较深的一个作用于cvxpy.atoms.affine.trace对象

要非常小心,因为副作用可能不同

为了非常直接地回答您的问题,我建议第二个选项是有效的,因为有人想让他们的API更容易,或者它恰好按照您期望的方式工作

关于第二个问题:嵌套方法不是一件事。cvxpy对象有一个称为atoms的属性,而atoms又有一个称为affine的属性,affine有一个称为trace的方法

相关问题 更多 >