2017-07-18 6 views
1

クラス単位(代わりに何も持っていない)最初の引数としてインターフェイスのインスタンスで呼び出さなければなりません.unitNo = _unitNo self.interface = _interfaceはTypeError: DEF <strong>のinit</strong>(自己、_chassisId、_unitNo、_interface): self.chassisId = _chassisId 自己結合していない方法getInterfaceNameは()

def getInterface(self): 
    return self.interface 

@staticmethod 
def parse(elem): 
    unitList = elem.find(UNIT+LIST) 
    chassisList = [] 
    for unit in unitList.findall(UNIT): 
     try: 
      unitNumber = unit.find(UNIT_NUMBER).text 
      interface = unit.find(INTERFACE) 
      interface = "" 
      chassisIdElem = unit.find(CHASSIS_ID) 
      chassisId = "" 
      if chassisIdElem is not None: 
       chassisId = unit.find(CHASSIS_ID).text 
      elif unit.find(BURNED_IN_MAC) is not None: 
       chassisId = unit.find(BURNED_IN_MAC).text 
      chassisId = chassisId.replace(".", "").replace(":", "").upper() 
      chassis = Unit(chassisId, interface, unitNumber) 
      chassisList.append(chassis) 
     except Exception as e: 
      print "Unit details not found", e 
     return chassisList 

def getChassisId(self): 
    return self.chassisId 

def __str__(self): 
    str = "\n" 
    str += "\nUnit Details:- " 
    len = str.__len__(); 
    str += "\n" 
    for i in range(1,len-1): 
     str += "-" 
    str += "\nUnit: " + self.unitNo 
    str += "\nChassis Id: " + self.chassisId 
    str += "\nInterfaces: " + self.interfaces 
    return str 

def __add__(self, other): 
    return str(self) + other 

def __radd__(self, other): 
    return other + str(self) 

クラスインターフェース: DEF INIT(自己、_linkState、_interfaceName): self.linkState = _linkState self.interfaceName = _interfaceName

@staticmethod 
def parse(elem): 
    prefix = Device.getPrefix(elem.tag) 
    interfaceList = elem.find(INTERFACE + LIST) 
    interfaceNameTag = eval(prefix + "_INTERFACE_NAME") 
    linkStateTag = eval(prefix + "_LINK_STATE") 
    interfaces = [] 
    for interface in interfaceList.findall(INTERFACE): 
     try: 
      interfaceName = interface.find(interfaceNameTag).text 
      linkStateElem = interface.find(LINK_STATE) 
      linkState = "" 
      if linkStateElem is not None: 
       linkState = interface.find(LINK_STATE).text 
      elif interface.find(LINE_PROTOCOL) is not None: 
       linkState = interface.find(LINE_PROTOCOL).text 
      interface = Interface(linkState, Name) 
      interfaces.append(interface) 
     except Exception as e: 
      print "Interface details not found", e 
      return interfaces 

def getLinkState(self): 
    return self.linkState 

def getInterfaceName(self): 
    return self.interfaceName 

def __str__(self): 
    str = "\n" 
    str += "\nInterface Details:- " 
    len = str.__len__(); 
    str += "\n" 
    for i in range(1,len-1): 
     str += "-" 
    str += "\nLink State: " + self.linkState 
    str += "\nInterface Name: " + self.interfaceName 
    return str 

def __add__(self, other): 
    return str(self) + other 

def __radd__(self, other): 
    return other + str(self) 
+0

を。 Interface()。getInterfaceName()のように呼び出します。 –

答えて

1

あなたは私たちにそれは難しいあなたを助けるためになり、エラーが発生しgetInterfaceName()への呼び出しを、示していません。あなたはそのように行うことができません

something = Interface.getInterfaceName() 

しかし、私は、コールが次のようになりますことを推測します。あなたはInterfaceインスタンスを作成し、その.getInterfaceName()メソッドを呼び出す必要があります:あなたは、オブジェクトのメソッドとして直接ではなく)(getInterfaceNameを呼び出している

myInterface = Interface() 
something = myInterface.getInterfaceName() 
+0

ここに私の完全なコードです – karan