我正在编写一个自定义类,并想使用一些选项关键字(例如draft
),这些关键字也由我需要导入的一些包共享,这会导致意想不到的结果。这是因为默认情况下,提供给类的所有选项都被视为全局的,并传递给所有导入的包。
在我看来这是一个令人难以置信的设计缺陷。
作为一个编写课程的凡人,我怎样才能了解所有现有和将要存在的包的选项,以避免名称冲突?
目前,我知道有两种可能的解决方案:
- 为所有旨在本地化的选项提供一些非常详细的名称,例如
<myclass>_<options>
- 处理完选项后立即从全局选项列表中删除它们。非常黑客!(参见egreg 的回答)
这两种方法都不能令人满意,正如 Raymond Hettinger 所说:一定会有更好的办法!
PS:我正在使用kvoptions
处理选项
相关问题: