Ver Mensaje Individual
  #2 (permalink)  
Antiguo 07/08/2009, 12:54
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: problema con clases

El problema es que al redefinir __init__, estas redifiniendo el constructor y con ello los miembros en ella.

Lo ideal seria hacer lo siguiente
Código python:
Ver original
  1. import scipy as sp
  2. import scipy.linalg as linalg
  3.  
  4. class Solution:
  5.     def __init__(self):
  6.         self.feed_flow = 70.0
  7.         self.feed = sp.array([0.15,0.25,0.4,0.2])
  8.         self.comp_names = ("xylene", "styrene", "toluene", "benzene")
  9.         self.var=("D_1", "B_1", "D_2", "B_2")
  10.         self.xylene = sp.array([0.07,0.18,0.15,0.24])
  11.         self.styrene = sp.array([0.04,0.24,0.1,0.65])
  12.         self.toluene = sp.array([0.54,0.42,0.54,0.1])
  13.         self.benzene = sp.array([0.35,0.16,0.21,0.01])
  14.         T0_comp_frac = self.feed_flow * self.feed    # component fraction on first tower (T0)
  15.         self.comp_eq = sp.array([self.xylene, self.styrene,
  16.                                  self.toluene, self.benzene]) #components linear equations
  17.         self.solve= sp.array(linalg.solve(self.comp_eq, T0_comp_frac))
  18.         self.D = self.solve[0] + self.solve[1]
  19.         self.B = self.solve[2] + self.solve[3]
  20.        
  21.     def comp(self):
  22.         print "D= %s" % self.D
  23.         print "B= %s" % self.B
  24.         for i in range(len(self.var)):
  25.                 print self.var[i], "=", self.solve[i]
  26.         flowname= ("D","B")
  27.         x = 0
  28.         while x<= 3:
  29.             y=0
  30.             z=0
  31.             while y<=2:
  32.                 temp = (self.comp_eq[x,y]*self.solve[y] +
  33.                         self.comp_eq[x,y+1]*self.solve[y+1])/(self.solve[y]+self.solve[y+1])
  34.                 y+=2
  35.                 print self.comp_names[x]+ " in "+ flowname[z]+" = ", temp
  36.                 z+=1
  37.             x+=1
  38.    
  39. class Solution2(Solution):
  40.     def set_feed_flow(self, percent):
  41.         self.feed_flow = 70.0 - 70.0 * percent
  42.    
  43.        
  44. if __name__=="__main__":
  45.     solution=Solution()
  46.     solution.comp()
  47.     print "*" * 80
  48.     percent = 0.01
  49.     solution2=Solution2()
  50.     solution2.set_feed_flow(0.01)
  51.     solution2.comp()

Espero haberte ayudado