【发布时间】:2015-09-24 07:56:26
【问题描述】:
get_min_length() 接受一个必须匹配get_pkt_type() 的可能返回值的参数:
def get_pkt_type(some_val):
"""Determine the type of an XCP packet.
:return:
'CMD' if "Command" packet,
'RES' if "Command Response" packet,
'ERR' if "Error" packet,
'CMD/RES' if uncertain whether a CONNECT CMD or a
RES packet, as their frame bytes can look identical.
:rtype: str
"""
if something:
return 'CMD'
elif something_else2:
return 'RES'
elif something_else3:
return 'ERR'
elif something_else4:
return 'CMD/RES'
def get_min_length(packet_type):
if packet_type in ['CMD', 'RES']:
return 4
elif packet_type in ['ERR', 'CMD/RES']:
return 6
packet_type = get_pkt_type(some_val)
length = get_min_length(packet_type)
如果程序员将新的数据包类型返回值添加到get_pkt_type(),我如何确保他也不会忘记将值添加到get_min_length()。在强类型语言中,packet_type 将是一个返回和传递的已定义类型,所以这样我会很安全。
【问题讨论】:
-
在 Python 中你不能。但是,如果您有一个完整的有效数据包列表,您可以添加一个单元测试,以确保您的所有函数都接受有效的数据包类型。
标签: python python-2.7 types duck-typing dynamic-typing