在 Python 中将包/模块作为参数传递

Mic*_*ael 5 python factory-pattern

假设我写了一些绘图程序。该程序依赖于可以绘制图形基元的模块。但是该图形模块可以是任何支持所使用操作的东西。它可以是在屏幕上绘图或写入文件格式或用笔控制机器人的模块。

我想动态切换该模块。在 C++ 中,人们通常会使用抽象工厂模式:绘图程序接收一个工厂作为参数,从中构建所需的图形基元。在 Python 中实现工厂模式也是完全可行的。

但是 - 仅将包用作参数是个好主意吗?从纯技术的角度来看,像下面这样的程序是可行的:

import screen_graphics
import robot_graphics

def my_plot_prog(graphics_lib):
   ...

my_plot_prog(screen_graphics) # plot on screen
my_plot_prog(robot_graphics) # R/C robot with a pen
Run Code Online (Sandbox Code Playgroud)

我可以这样做吗,还是有一些严重的陷阱或更好的方法?