我目前在类似于此类的类中使用argparse:
class MyClass:
P_OPT = "my-opt"
"""This is an option to my script."""
P_OPT_HELP = "This is an option to my script"
"""Description for argparse"""
def __init__(self, **kwargs):
# do stuff here
pass
@classmethod
def parse_arguments(cls):
parser = argparse.ArgumentParser()
parser.add_argument('--' + cls.P_OPT, help=cls.P_OPT_HELP)
def main():
MyClass(**MyClass.parse_arguments())
工作正常,但是我有很多选择和参数,P_OPT
文档字符串和P_OPT_HELP
的内容之间存在冗余。另外,我还必须为P_OPT_HELP
做一个文档字符串,否则我的项目linter仍然会感到不满意。 PEP 224决定在运行时没有内置的方法可以访问类和实例属性docstring。
是否有模块或聪明的python技巧来做到这一点?
到目前为止,我所考虑的只是使用dict
,它不能防止冗余,但不会对我的类名称空间造成太大的污染:
P_OPT = {"name": "my-opt", "help": "This is an option to my script"}
"""This is an option to my script"""
然后:
parser.add_argument('-' + P_OPT["name"], help=P_OPT["help"])