我想知道这是否可能......目前,我只有一个继承...而且它工作正常......
在我的CiscoPlatform类中,我没有 init 方法,因此在创建对象时需要6个参数(因为我使用的是BasePlatform init 方法) ...
我创建这样的对象,它工作正常:
ntw_device = []
device = CiscoPlatform(list[0],list[1],list[2],list[3],list[4],list[5])
ntw_device.append(device)
class BasePlatform(object):
def __init__(self,ip,hostname,username,password,vendor,type):
self.ip = ip
self.hostname = hostname
self.username = username
self.password = password
self.vendor = vendor
self.type = type
class Cisco(BasePlatform,Interface):
pass
我想介绍一个名为Interface
的新基类class Interface(object):
def __init__(self,host,interface,vlan):
self.host = host
self.interface = interface
self.vlan = vlan
我如何能够继承具有不同参数数量的两个父类?像这样的东西? *假设switchport = [] - 对象列表
class CiscoPlatform(BasePlatform,Interface):
def __init__(self):
BaseClass.__init__(self,ntw_device[0].ip,ntw_device[1].hostname,ntw_device[2].username,ntw_device[3].password,ntw_device[4].vendor,ntw_device[5].type)
Interface.__init__(self,switchport[0].Add to dictionary[1].interface,switchport[2].vlan)
由于CiscoPlatform不再接受6个参数,我如何能够以这种方式再次创建对象?
device = CiscoPlatform(list[0],list[1],list[2],list[3],list[4],list[5])
答案 0 :(得分:1)
我不确定你的目的是确保CiscoPlatform
课程可以接受不同数量的论点,如果是这样,那就不会很难。
初始化新子类时,将调用其__init__()
以启动CiscoPlatform
。所以你只需要在决定哪些基类之前检查传入的参数的数量。应该使用__init__
class CiscoPlatform(BasePlatform,Interface):
def __init__(self, *arg):
if len(arg) == 6:
ip,hostname,username,password,vendor,type = arg
BaseClass.__init__(self,ip,hostname,username,password,vendor,type )
elif len(arg) == 3:
host,interface,vlan = arg
Interface.__init__(self,host,interface,vlan)
else:
raise ValueError("Inconsistent arguments number")