我想征求您对如何构造最适合我需要的Python类的建议
假设我首先介绍一个Python类LatticeClass
。特别是,LatticeClass
附带了一个方法TheModel()
,该方法可以创建一个埃尔米特矩阵HH
,如下所示:
obj = LatticeClass()
obj.a = 3.0
obj.b = -0.80
HH = obj.TheModel()
现在我想介绍另一个Python类LatticeProperty
,它是从LatticeClass
继承的。这个类将计算HH
的特征值和特征向量,并使用它们来计算其他东西。例如,以下是我编写的代码:
class LatticeProperty(LatticeClass):
def __init__(self):
super().__init__()
@property
def spectrum(self):
HH = self.TheModel()
mat = HH.todense()
print(mat.shape)
val, vec = Lib.eig(mat)
return val, vec
def Method1(self):
val, vec = self.spectrum
total_energy = val.sum()
return total_energy
假设我现在编写以下代码:
newobj = LatticeProperty()
newobj.a = 3.0
newobj.b = -0.80
我想要的是:
newobj.spectrum
时,除非我改变参数a
和b
,否则我只需要让系统给我特征值和特征向量,而不需要再次进行对角化李>newobj.Method1()
时,它应该使用存储的特征值和特征向量给出最终答案,而不调用矩阵对角化李>然而,此时,每当我调用newobj.spectrum
时,系统都执行矩阵对角化。我应该如何解决此问题
谢谢
目前没有回答
相关问题 更多 >
编程相关推荐