1

我正在编写一个接口matplotlib,它要求将浮点列表视为对应于颜色图,但其他类型的输入被视为指定特定颜色。

为此,我计划使用matplotlib.colors.colorConverter,这是一个将其他类型的输入转换为matplotlibRGBA 颜色元组的类的实例。但是,它也会将浮点数转换为灰度颜色图。这与我正在处理的包的现有功能相冲突,我认为这是不可取的。

我的问题是:在使用isinstance()之前使用检查colorConverter以确保我不会错误地处理浮点数列表是否合适/Pythonic?有没有更好的方法我没有想到?

我读过我通常应该对接口进行编码,但在这种情况下,接口的功能与所需的功能不同。

4

2 回答 2

2

为什么不编写两个单独的函数,一个将其输入视为颜色图,另一个将其输入视为颜色?这将是解决问题的最简单方法,既可以避免意外,又可以为您留出未来扩展功能的空间。

于 2014-11-16T15:58:27.800 回答
2

这有点主观,但我想说:总的来说,这不是一个好主意,但在这里你区分容器和类的实例合适的(特别是当这些类本身可能是可迭代的,比如元组或字符串,这样做鸭子打字会变得非常棘手)。

另外:通常建议对接口进行编码,但它比 Python 更适用于 Java 风格的静态语言,在 Python 中接口并不真正存在,除非您计算抽象基类和模块等(在What'sabc中进行了更深入的讨论“针对接口而不是对象的代码”的 Python 版本?

很难说没有更多细节,但听起来你比任何事情都更接近于在这里建立一个门面,因此你应该可以自由使用你自己的(更整洁/更紧密/不同)API,将用户与你的底层实现隔离( Matplotlib)。

于 2014-11-16T15:58:52.467 回答