2014-10-15 3 views
0

몇 가지 기능이있는 클래스가 있습니다. 내 change_date 함수에서 __init__의 변수 self.date을 다시 할당해야합니다. 그러나 처음에는 self.date = yesterday()이 필요합니다. 다른 기능에서 어떻게 재 할당 할 수 있습니까? 그런 다음 __init__의 새 날짜가있는 프로세스를 계속 진행 하시겠습니까?클래스 내의 다른 함수에서 변수를 갱신하는 방법은 무엇입니까?

class PVData: 
    def __init__(self): 
     self.date = yesterday() 
     self.data = load_data(self.date) 

     #time, temp, sun 
     self.time = [] 
     self.temperature = [] 
     self.sunlight = [] 
     self.powerlist = [] ####LIST OF ALL POWER TUPLES FOR DAY 
     for minute in self.data: 
      self.time.append(minute[0]) 
      self.temperature.append(minute[1]) 
      self.sunlight.append(minute[2]) 
      self.powerlist.append(minute[3]) 
     ##power 

     self.placelist = [] 
     for i in ARRAYS: 
      self.placelist.append(i) 

     ##Combine lists to dictionary with loop 
     self.dictionary = {} 
     self.dictionary = dict(zip(self.placelist, self.powerlist)) 




def change_date(self, date): 
     if self.date != date: 
      self.date = date 
      self.__init__()   
      #self.refresh() 
     else: 
      self.date = date 
+0

. 'PVData' 클래스를 만들면 자동으로'__init __()'을 호출 할 것입니다. – ZWiki

답변

1

일반적으로, 당신은 다른 기능, 예를 들어,로 __init__ 논리의 대부분을 리팩토링 할 것 다른 모든 설정 self.date를 사용 _initialize ... 당신은`자기 .__ 초기화 __()`호출 할 필요는 없다

class PVData(object): 
    def __init__(self): 
     self.date = yesterday() 
     self._initialize() 

    def change_date(self, date): 
     if self.date != self.date: 
      self.date = date 
      self._initialize() 

    def _initialize(self): 
     self.data = load_data(self.date) 

     #time, temp, sun 
     self.time = [] 
     self.temperature = [] 
     self.sunlight = [] 
     self.powerlist = [] ####LIST OF ALL POWER TUPLES FOR DAY 
     for minute in self.data: 
      self.time.append(minute[0]) 
      self.temperature.append(minute[1]) 
      self.sunlight.append(minute[2]) 
      self.powerlist.append(minute[3]) 
     ##power 

     self.placelist = [] 
     for i in ARRAYS: 
      self.placelist.append(i) 

     ##Combine lists to dictionary with loop 
     self.dictionary = {} 
     self.dictionary = dict(zip(self.placelist, self.powerlist)) 
+0

initilize 함수 대신에 if 문에서'else' 부분을 활용하고 init에서'change_date'를 호출 할 수 있습니다 ? – user3663720

관련 문제