簡體   English   中英

python對象的訪問名稱

[英]Access name of python objects

我做了一個課程來使用加熱線:

class Heating_wire:

    def __init__(self, ro, L,d,alpha):

        self.ro = ro
        self.L = L
        self.d = d
        self.alpha = alpha
        self.RT = [1]
        self.vector_T = [1]
    def get_R20(self):
        self.R_20 =  self.ro*self.L/(np.pi*(self.d/2)**2)

    def  calcular_RT(self,vector_temp):
        self.vector_T = vector_temp
        self.RT =  [self.R_20*(1 + temp*self.alpha) for temp in vector_temp ]
        return self.RT

實例化一些對象:

kantal = Heating_wire(1.45,0.25,0.3,4e-5)
nicromo = Heating_wire(1.18,0.25,0.3,0.0004)
ferroniquel = Heating_wire(0.86,0.25,0.3,9.3e-4)

wires = [kantal,nicromo,ferroniquel]

並做了一個情節:

leg = []
vector_temp = np.linspace(20,1000,1000)
for wire in sorted(wires):
    wire.get_R20()
    wire.get_RT(vector_temp)
    line, = plt.plot(wire.vector_T,wire.RT)
    leg.append(line)
plt.legend(leg,sorted(wires))

問題是我沒有在圖例中獲得正確的名稱,而是對對象的引用:

在此處輸入圖片說明

如果我添加一個名稱屬性

def __init__(self,name, ro, L,d,alpha):
    self.name = name

我可以附加名稱

leg = []

names= []
vector_temp = np.linspace(20,1000,1000)
for wire in sorted(wires):
    wire.get_R20()
    wire.get_RT(vector_temp)
    line, = plt.plot(wire.vector_T,wire.RT)
    leg.append(line)
    names.append(wire.name)
plt.legend(leg,names,loc='best') 

在此處輸入圖片說明

但我想知道是否有更簡單的方法可以直接使用電線列表中的對象名稱來解決這個問題:

kantal = Heating_wire(1.45,0.25,0.3,4e-5)
nicromo = Heating_wire(1.18,0.25,0.3,0.0004)
ferroniquel = Heating_wire(0.86,0.25,0.3,9.3e-4)

wires = [kantal,nicromo,ferroniquel]

就這樣做,沒有重復:

wires = [
    Heating_wire("kantal", 1.45,0.25,0.3,4e-5),
    Heating_wire("nicromo", 1.18,0.25,0.3,0.0004),
    Heating_wire("ferroniquel", 0.86,0.25,0.3,9.3e-4)
]

回答你的問題,不,對象不能訪問它們被賦予的名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM