【发布时间】:2016-04-26 21:39:09
【问题描述】:
我一直在构建一个 python 图像处理模块,用于处理与激光束相关的图像。图像的内容不同(激光束图像、散射光图像等),文件类型因用于捕获图像的仪器而异。但是任何一种文件类型都可能包含任何一种内容类型。
模块目前的结构是
-
父类:包含所有类型内容通用的方法
-
子类 1: 包含对内容类型 1 有用的方法
-
Grandchild Class 1:只有
__init__()用于导入文件类型 a 的语句 -
Grandchild Class 2:只有
__init__()用于导入文件类型 b 的语句
-
Grandchild Class 1:只有
-
子类 2: 包含对内容类型 2 有用的方法
-
Grandchild Class 1:只有
__init__()用于导入文件类型 a 的语句 -
Grandchild Class 2:只有
__init__()用于导入文件类型 b 的语句
-
Grandchild Class 1:只有
-
子类 1: 包含对内容类型 1 有用的方法
问题在于孙类本质上是相同的,因为它们包含用于导入不同类型文件的代码,这些文件可能包含来自任一子类的内容。
有没有更优雅/pythonic 的方式来做到这一点?
我应该注意到,不同的文件类型需要不同的预处理,所以解决方案并不像使用 e.g.可以识别标准图像文件扩展名的 PIL。
【问题讨论】:
-
不提供代码,这个问题只是一个很难读的列表。尝试编辑并提供我们都可以使用的东西。
-
我会创建 2 个 mixins 类,1 个用于导入文件类型 a,另一个用于导入文件类型 b,并相应地将它们添加到子类中
-
@Apero 我不熟悉混入;这基本上回答了我的问题。谢谢!
-
@Jim 对于大量的子类,我最初编写的框架代码感觉比这个列表可读性差得多,但也许我弄错了。无论如何,Apero 的评论基本上回答了我的问题。
-
这是可以理解的,我猜。我希望我没有通过评判你创建列表的技能来冒犯你。无论如何,如果您可以为这个问题提供一个好的答案,那就这样做(但没有大的复杂列表!)。如果没有,您可以随时删除整个 Q。:-)
标签: python file class import subclass