2016-11-12 70 views
1

這裏是我的代碼:如何引用Python中另一個類的方法中的函數「返回」?

class MetricTensor: #The Metric Tensor Class 
    def __init__(self, g0, g1, g2, g3, g4, g5, g6, g7, g8, g9, g10, g11, g12, g13, g14, g15): #Metric components 
     self.g0 = g0 
     self.g1 = g1 
     self.g2 = g2 
     self.g3 = g3 
     self.g4 = g4 
     self.g5 = g5 
     self.g6 = g6 
     self.g7 = g7 
     self.g8 = g8 
     self.g9 = g9 
     self.g10 = g10 
     self.g11 = g11 
     self.g12 = g12 
     self.g13 = g13 
     self.g14 = g14 
     self.g15 = g15 

    def LMetric(self): 
     lmetric = [self.g0, self.g1, self.g2, self.g3, self.g4, self.g5, self.g6, self.g7, self.g8, self.g9, self.g10, self.g11, self.g12, self.g13, self.g14, self.g15] 
     return list(lmetric) 

    def Mmetric(self,lmetric): 
     mmetric = np.matrix([lmetric[0],lmetric[1],lmetric[2],lmetric[3], [lmetric[4],lmetric[5],lmetric[6],lmetric[7]], [lmetric[8],lmetric[9],lmetric[10],lmetric[11]], [lmetric[12],lmetric[13],lmetric[14]],lmetric[15]]) 
     return mmetric 

    def InvMmetric(self,mmetric): 
     invmmetric = self.np.linalg.inv(mmetric) 
     return invmmetric 
    def LInvMetric(self,invmmetric): 
     linvmetric = list(invmmetric) 
     return linvmetric 

class ChristoffelSymbol(MetricTensor): 
    def __init__(self,a, b, c): 
     self.a = a 
     self.b = b 
     self.c = c 
     Ca = None 
     for k in numcoords: 
      Ca += 1/2*(linvmetric) 

通知的MetricTensor類的最後一個方法:LInvmetric,這個函數返回:linvmetric。

我的問題是: 如何在一個新類(ChristoffelSymbol)中使用這個return(linvmetric),它是第一個(MetricTensor)的子類?

更準確地說,我該如何只使用linvmetric中的一個元素(因爲它是一個列表,我想使用linvmetric [0])?經過一番討論

+0

numpy的被導入爲 「NP」 – Investor

+0

'''what_i_want,* _ = self.LInvMetric(invmmetric)''' – wwii

回答

1

更新答案:

您還需要調用您在MetricTensor類所定義的方法。下面的代碼做到這一點:

mt = MetricTensor("...args...") # args here are all the metric components 
lmetric = mt.LMetric() 
mmetric = mt.Mmetric(lmetric) 
invmmetric = mt.InvMmetric(mmetric) 
linvmetric = mt.LInvMetric(invmetric) 

現在linvmetric可以進一步代碼中使用。

0

只要使用self,因爲它從MetricTensor

繼承
self.LInvMetric() - will get you the full list 
self.LInvMetric()[0] - first elem and so on 
相關問題