2017-07-20 122 views
0

我想问一下在python中存储信息的正确方法。在课堂上存储数字(大部分是整数)是否可以这样?或者其他方式更好,更优化。什么是在python中存储信息的正确方法

class Eclass: 
    def __init__(self, name, pre=None, suf=None, t=None, g=None, subg=None, p=0, a=0, m=0, v=0, 
       ast=0, d=0, bd=0, bhc=0, cc=0, bc=0, bhp=0, bmp=0, hpr=0, mr=0, br=0, pr=0, 
       sr=0, fr=0, er=0, ar=0, wr=0, ar=0, dr=0, vr=0, bar=0, lbr=0, lpr=0, lsr=0, 
       lfr=0, ler=0, lar=0, lwr=0, lare=0, ldr=0, lvr=0, lear=0, sl=0, sm=0, mr=0, 
       rr=0, td=0): 
     self.name = name 
     self.pre = pre 
     self.suf = suf 
     self.t = t 
     self.g = g 
     self.subg = subg 
     self.oi = name 
     self.p = p 
     self.a = a 
     self.m = m 
     self.v = v 
     self.ast = ast 
     self.d = d 
     self.bd = bd 
     self.bhc = bhc 
     self.cc = cc 
     self.bc = bc 
     self.bhp = bhp 
     self.bmp = bmp 
     self.hpr = hpr 
     self.mr = mr 

     self.br = br 
     self.pr = pr 
     self.sr = sr 
     self.fr = fr 
     self.er = er 
     self.ar = ar 
     self.wr = wr 
     self.ar = ar 
     self.dr = dr 
     self.vr = vr 
     self.bar = bar 

     self.lbr = lbr 
     self.lpr = lpr 
     self.lsl = lsr 
     self.lfi = lfr 
     self.lea = lea 
     self.lai = lai 
     self.lwa = lwa 
     self.lae = lar 
     self.ldi = ldr 
     self.lvo = lvr 
     self.lear = lear 

     self.sl = sl 
     self.sm = sm 

     self.mr = mr 
     self.rr = rr 
     self.td = td 

     self.tags = [] 

    def add_tags(self, *args): 
     for element in args: 
      self.tags.append(element) 

所有这些用于其他与此类一起工作的函数。

+2

您应该使用结构像一本字典或列表。而且,请使用更多描述性名称作为属性。 – stybl

+1

这肯定会起作用,但可能很难处理 - 它需要大量输入,并且有很多机会犯错误。查看词典或Pandas数据框以获取更复杂的任务。 – perigon

+0

谢谢你的答案 – Hsin

回答

1

字典将适合此。

dic1 = dict(pre=None, suf=None, t=None, g=None, subg=None, p=0, a=0, m=0, v=0, ast=0) 
dic1['lwa'] = 0 
dic2 = {'a': 0, 'suf': None, 'pre': None, 'g': None, 'ast': 0, 'm': 0, 'p': 0, 'subg': None, 't': None, 'v': 0, 'lwa': 0} 

print (dic1) 
print (dic2) 
print (dic1['t']) 
print (dic2['lwa']) 
print (dic1 == dic2) 

输出:

{'a': 0, 'suf': None, 'pre': None, 'g': None, 'ast': 0, 'm': 0, 'p': 0, 'subg': None, 't': None, 'v': 0, 'lwa': 0} 
{'pre': None, 'ast': 0, 'subg': None, 'a': 0, 'suf': None, 'g': None, 'm': 0, 'p': 0, 't': None, 'v': 0, 'lwa': 0} 
None 
0 
True 
+0

谢谢你的回答 – Hsin

+0

[NamedTuples](https://docs.python.org/2/library/collections.html?highlight=namedtuple#collections.namedtuple)是另一种选择。如果您有很多值,则与字典相比,内存使用量会大大降低。 – danny

相关问题