2017-03-18 5 views
0

나는이 다음 디렉토리파이썬 상속 다른 폴더

- actions 
    - create_session.py 
    - lib 
     - __init__.py 
     - prep_vars.py 
     - details.xlsx 

나는이 prep_vars.py

class PrepVars(object): 

    def __init__(self): 

     try: 
      self._wb = load_workbook(filename='details.xlsx', data_only=True) 
      self._ws = self._wb['Switch Details'] 
     except IOError: 
      print ("test 123") 
     self.ipadd_sw1 = self._ws['C7'].value 
     self.ipadd_sw2 = self._ws['D7'].value 
     self.user_sw1 = self._ws['C8'].value 
     self.user_sw2 = self._ws['D8'].value 
     self.password_sw1 = self._ws['C9'].value 
     self.password_sw2 = self._ws['D9'].value 
     self.icl1_sw1 = self._ws['C10'].value 
     self.icl1_sw2 = self._ws['D10'].value 
     self.session_vlan = self._ws['C12'].value 
     self.session_network = self._ws['C13'].value 
     self.session_subnet = self._ws['C14'].value 

에 다음 코드와 create_session.py에서 아래의 코드

from lib.prep_vars import PrepVars 

class SessionRun(PrepVars): 

    def __init__(self): 
     super(PrepVars, self).__init__() 

    def run(self): 
     print ("test {0}".format(self.ipadd_sw2)) 

코드를 실행할 때 오류가 발생합니다 (아래 참조). 왜 이런 일이 일어나고 있는지 잘 모르겠습니다. prep_vars.py 코드를 정상적으로 실행하면됩니다.

오류가

AttributeError: 'SessionRun' object has no attribute '_ws' 
+1

'super (PrepVars, self) .__ init __()'은'super (SessionRun, self) .__ init __()'이어야합니다. 'PrepVars .__ init __()'을 호출하지 않고'PrepVars'를 건너 뛰는'object .__ init __()'을 호출하는 것입니다. – dhke

+0

나는 그것을 피곤했다. 시트가 lib 폴더가 아닌 actions 폴더에 있어야한다는 것을 발견 한 후 다른 오류가 발생했습니다. 감사 –

답변

0

당신의 try 블록은 예외를 제기 할 수 없습니다. "test 123"가 인쇄 된 것을 보았습니까? 그렇다면 예외 발생이 확인되므로 ._ws이 정의되지 않았습니다.

이런 식으로 try...except을 사용하는 것은 좋지 않습니다.