Python 模块内需要不同导入的多个类的最佳实践?

Python 模块内需要不同导入的多个类的最佳实践?,python,Python,我在PEP8中看到,公认的导入最佳实践是将所有导入放在模块顶部。我想知道,如果您希望在同一个模块中有多个具有不同导入需求的子类,那么这种情况是否仍然存在 具体来说,我正在创建一个通用的DataConnector类来读取来自不同来源的数据,然后将该数据放入一个数据帧中。我将拥有读取不同数据源的子类。例如,一个子类是CsvConnector(DataConnector),另一个子类是PGdatabaseConnector(DataConnector)。Csv子类需要导入Csv,PGdatabase类

我在PEP8中看到,公认的导入最佳实践是将所有导入放在模块顶部。我想知道,如果您希望在同一个模块中有多个具有不同导入需求的子类,那么这种情况是否仍然存在

具体来说,我正在创建一个通用的
DataConnector
类来读取来自不同来源的数据,然后将该数据放入一个数据帧中。我将拥有读取不同数据源的子类。例如,一个子类是
CsvConnector(DataConnector)
,另一个子类是
PGdatabaseConnector(DataConnector)
。Csv子类需要导入
Csv
,PGdatabase类需要导入
psycopg2
。最好的做法仍然是将所有导入保持在整个模块的顶部吗


(从逻辑上讲,似乎所有的类都应该包含在一个模块中,但我也可以看到将它们都放在不同的模块中,这样我就不必担心导入不使用的库了。)

偶尔会有您希望将导入放在其他地方的情况(例如,当导入具有需要按特定顺序调用的副作用时),但在这种情况下,所有导入都应该放在.py源文件的顶部,就像目录一样。如果您觉得文件变得太乱,请将每个类和相关导入分解到新的源文件中。

除非您希望应用程序在只有部分模块可用的情况下仍部分运行。我认为P希望能够有条件地导入同一模块中的每个类(请记住,Python不是Java,您可以在同一模块中有多个类)。