我正在编写一个matplotlib
的接口,它要求将浮动列表视为对应于颜色映射,但其他类型的输入被视为指定特定颜色。
为此,我计划使用matplotlib.colors.colorConverter
,它是将其他类型的输入转换为matplotlib
RGBA颜色元组的类的实例。但是,它还会将浮动转换为灰度色彩图。这与我正在处理的软件包的现有功能相冲突,我认为这是不可取的。
我的问题是:在使用isinstance()
之前使用colorConverter
检查以确保我没有错误地处理浮动列表是否合适/ Pythonic?有没有更好的方式我没有想到?
我已经读过我通常应该编写一个接口代码,但在这种情况下,接口的功能与所需的功能不同。
答案 0 :(得分:2)
为什么不写两个单独的函数,一个将输入视为颜色映射,另一个将其输入视为颜色?这将是解决问题的最简单方法,既可以避免意外,也可以为将来扩展功能留下空间。
答案 1 :(得分:1)
这有点主观,但我要说:一般来说,这不是一个好主意,但在这里您可以区分容器并且 类的实例是适当的(特别是当这些类本身可以迭代时,比如元组或字符串,并且这样做鸭子打字会相当棘手的)。
除了:通常建议对接口进行编码,但它比Python更适用于Java风格的静态语言,其中接口不需要&# 39; t确实存在,除非你计算抽象基类和abc
模块等(What's the Python version for “Code against an interface, not an object”?中更深入的讨论)
很难说没有更多细节,但听起来你在这里建立一个facade比什么更接近,因此你应该可以自由使用你自己的(更整洁/更紧/不同) API,将用户与基础实现隔离开来(Matplotlib)。