我想显示
--help
的默认值、参数类型和大间距。
但是如果我这样做
import argparse
class F(argparse.MetavarTypeHelpFormatter, argparse.ArgumentDefaultsHelpFormatter, lambda prog: argparse.HelpFormatter(prog, max_help_position = 52)): pass
parser = argparse.ArgumentParser(
prog = 'junk',
formatter_class = F)
出现以下错误
TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases
有谁知道如何正确组合这三个格式化程序?
通过更简单的设置可以轻松重现相同的症状。
>>> def identity(prog):
... return prog
...
>>> class F(object, identity): pass
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases
请引用您的参考文献。 我无法想象为什么有人会相信尝试 以这种方式配置 MRO 就会成功。 将帮助格式化程序功能放入一个类中并继承自that。
您尝试做的事情不受支持, 并且 python 正确地提供了一个诊断来解释这一点。