我有几个巨大的表与数据调用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