我有幾個巨大的表與數據調用bnds.data和密度。數據。我還有一個處理這些數據表的類。 該類被稱爲循環,爲了避免重複和時間要求將這些數據表加載到內存中,我想創建另一個類並初始化其中的一些變量。 下面是一段代碼,給什麼我想要做的想法:在Python中從一個類訪問變量到另一個類
import numpy as np
class Pixel:
def __init__(self):
self.bounds = np.loadtxt('bnds.data')
self.rho = np.loadtxt('densities.data')
class Density(Pixel):
def __init__(self, pixel, phi, theta):
self.phi = phi
self.theta = theta
latitude = int(90 - self.phi +1)
longitude = int(180 + self.theta + 1)
n = (latitude -1)*360 + longitude -1
self.rho = pixel.bounds[n]
def print_rho(self):
print (self.rho)
pixel = Pixel()
rho = Density(pixel, 10, 20) # phi = 10, theta = 20
rho.print_rho()
這裏,像素的情況下被髮送到班密度。數據加載在Pixel類中完成。密度類將在循環中調用。我不太明白的是每次調用Density類時是否會初始化Pixel類?如果是,那麼如何避免它?我的猜測是,無論Density類被調用多少次,Pixel類都會一勞永逸地初始化。這是對的嗎? phi and theta是變量,它們在循環中取不同的值。我需要的是bnds.data & densities.data表,一勞永逸地加載。
是的,它是正確的。只要你像上面所做的那樣只實例化一個Pixel對象,就可以製作多個引用像素數據的Density對象。 – Alexander
@亞歷山大只是爲了澄清,你的意思是,如果我寫這樣的東西: '我在範圍內(90):rho =密度(像素,我,我)'Pixel類將只被引用一次? – Albert
它將被多次引用,但只創建一次。並且不要從Density繼承Pixel。只是'班密度(對象):' – Alexander