我有以下课程:
def Interface:
def __init__(self, vlan, zone, address):
self.vlan = vlan
self.zone = zone
self.__address = []
for i in address:
self.__address.append(ipaddress.IPv4Interface(i))
接口实例永远不会有多个区域和vlan,但可能有1+个地址。 到目前为止,address参数是一个包含一个或多个地址作为项目的列表。
所以这是我的第一个问题:使用列表作为参数是不错的做法?
目前我考虑如何访问地址变量:
使用属性
我可以使用属性@ address.set附加地址,使用@ address.del删除一个特定地址,使用@address将所有地址作为列表。
我不喜欢这种方法:
编写自定义方法
使用自定义方法,例如:def add_address(address),def clear_address(),get_address_all()
我不喜欢这种方法:
为什么我会考虑它,只需将列表直接用作Interface.address
我不喜欢这种方法:
可能有人在这里可以给我一些有用的提示或理由为什么偏好一种方式而不是另一种方式(或者可能是另一种方式)。
谢谢!
答案 0 :(得分:0)
您更改接口以允许将变量地址计数传递给构造函数。
class Interface:
def __init__(self, vlan, zone, *addresses):
# ...
i = Interface(myVlan, myZone, myAddress1, myAddress2)
addresses
成为包含myAddress1
和myAddress1
的元组。或者,您可以接受地址对象或地址对象列表,并根据其类型处理参数。至于地址访问,我肯定会选择2号选项。它非常灵活,易于阅读,理解和使用。