【发布时间】:2017-06-21 00:46:24
【问题描述】:
在本课中:
class message:
def __init__(self, node_info = None):
if node_info is None: node_info = []
self.node_info = node_info
@property
def node_info(self):
return self._node_info
@node_info.setter
def node_info(self, value):
self._node_info = value
node_info 应该有类似这样的布局:
sample_node_info = [
'Node Name',
'Node URL',
status,
['Service1','ServiceURL1',status],
['Service2','ServiceURL2',status]
]
前两个元素是字符串,是必需的。后续元素是列表,并且是可选的。可选元素(如果包含)应包含三个必需元素:
service_info = ['ServiceName','ServiceURL',status]
问题:如何在上面的类中针对这种格式验证 node_info?我必须解析列表还是有更好的方法,比如定义某种模式/格式?
【问题讨论】:
-
那么,你有什么尝试?
-
我试图节省一些时间,并避免手动验证。
-
关于现有代码的两件事:1)在
__init__,应该是self._node_info = ...吗? 2) 你不应该使用可变的默认参数node_info = [],这将在使用默认参数的所有实例中使用相同的列表。 -
这基本上是一个工具/软件库请求,在 SO 上是题外话。有几个很好的模式验证库。
voluptuous很受欢迎。 -
太棒了!谢谢@wim。 :)
标签: python python-2.7