问题:有一个名为settings.py的用于放置常数的文件,现在有另一个文件需要调用这个文件里的常数,而最终的run.py文件用于执行这个文件
一个文件名为settings.py的代码如下:
import numpy as np
class Settings(object): #定义放置常数的类
def __init__(self):
self.l_min = 2
self.l_max = 140
self.r = 0.05
self.delta_r = 0.0501-0.05
self.fsky = 0.2
self.skyam = 4.0*np.pi*self.fsky*((180.0*60.0)/np.pi)**2 #arcmin**2
self.arcmin_to_radian = np.pi/(180.0*60.0)
self.deg_to_radian = np.pi/(180)
self.arcmin_to_deg = 1/60
self.kB = 1.3806505*10**(-23) # J/K
self.h = 6.6260693*10**(-34+9) # J·s, dimension becomes J/GHz by plus 9
self.c = 299792458
self.nu1 = 140
self.nu2 = 220
self.nu3 = 240
self.nu = np.array([self.nu1,self.nu2,self.nu3])
settings.py是一个名为Settings的类,类中定义了很多常数,现在有另一个名为test2.py的文件,这个文件需要使用到settings中的常数,这个时候可以如下:
class FoM():
def __init__(self,st): #初始化,其中带有一个参数st(st是settings的简写,下面run会说到)
self.st = st
def FoM1(self): #r/sigma_r
return self.st.r
这里看到,st是没有定义的,所以这个文件是运行不了的,只是定义了类FoM这个类,是一个子程序
现在要定义一个总的运行程序,称为run.py。代码如下:
from test2 import FoM
from settings import Settings
st = Settings() #简写
test = FoM(st).FoM1() #将Settings的所有常数都调入
print(test)
>>> 0.05
run.py调用了程序test2和settings,第三行定义Settings为st,而st放入了FoM中了,所以这个时候参数settings中的常数也就进去了。