我有一个样式问题:这是专门针对Python的,但我也常常想用其他语言。
我有一个对象,我正在整个地方返回:它是一个包含许多键的字典。我模块的主要目的是一个函数返回这个字典;该模块的其余部分只是实现此功能。在该main函数的docstring中,我有助于准确记录键的含义:
"""
Returns:
None if the ROP should not be replaced, or a list of dictionaries
corresponding to commands that should be run sequentially. Each
dictionary contains the following keys:
'command': a command that should be run in a shell
'service': a string for the service that should be used, or None if any service can be used
'cleanup_sequences': a list of hash-padded file sequences that should be cleaned up
'cleanup_files': a list of files that should be cleaned up
'log_sequences': a list of hash-padded file sequences that should be logged
'log_files': a list of file that should be logged
'start_frame': the first simulation frame / the first frame to be cleaned up
'end_end': the last simulation frame / the last frame to be cleaned up
"""
不幸的是,对于我来说,这个对象在被模块中的main函数返回之前会经过其他三个函数。因此,我将这三个其他函数中每一个的每个文档字符串中的键包含在内。
这本身并不可怕:但它有很多重复的行,如果我更改了这本字典中的键,它也是一堆维护。
你们之前有没遇到过这个?由于键总是相同的,我想知道是否应该将它包装在我自己的类“MyDictionaryClass”中,并使用自己的docstring,然后在函数的文档字符串中我可以说“返回:MyDictionaryClass的一个实例”。但是,我不确定我应该使用什么样的对象---在C ++中我可能会为某种命名的地图输入dede。
感谢Python大师的任何建议!
答案 0 :(得分:0)
不是大师,但我有同样的问题。我的确做了自己的字典:
class MyDictionary( dict ) :
def __init__(self, *arg, **kwargs ):
# do some stuff for instance check mandatory keys are present
super(self.__class__, self).__init__( *arg, **kwargs )
然后我会记录我的函数返回MyDictionary
的字符串注释