【发布时间】:2016-12-11 16:02:51
【问题描述】:
我有以下课程:
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
我不喜欢这种方法的是:
- 这不是一个简单的字符串列表,而是 IPv4Interface 类的实例。如果我的同事不关心,情况可能会更糟。
可能有人在这里可以给我一些有用的提示或理由为什么更喜欢一种方式而不是另一种方式(或者可能是另一种方式)。
谢谢!
【问题讨论】:
标签: python list class properties getter-setter