Python Bokeh 导入逻辑

Python Bokeh imports logic

在 Python Bokeh 中可以导入具有 2 个不同路径的某些 类,例如:

from bokeh.plotting import ColumnDataSource

有效,以及:

from bokeh.models import ColumnDataSource

背后的逻辑是什么?我只是发现在使用文档中的示例时,并不 neat/nice 总是对导入路径的方式感到惊讶(因为它们总是不同的)。

在这种情况下,为了避免冲突你会这样做。如果幸运的话,无论如何都会引用相同的 类,在最坏的情况下,您可能会遇到一些令人讨厌的 problem.s

from bokeh.plotting import ColumnDataSource as pcd
from bokeh.models import ColumnDataSource as mcd

在这种情况下,它们是相同的:

print pcd.__mro__
print mcd.__mro__

'bokeh.models.sources.ColumnDataSource'>, 'bokeh.models.sources.DataSource'>, 'bokeh.model.Model'>, 'bokeh.core.properties.HasProps'>, 'bokeh.util.callback_manager.CallbackManager'>,

您会发现 bokeh.plottingbokeh.models 导入 ColumnDataSource。该行为是 类 如何导入不同名称空间的结果。您最好的做法是从定义 ColumnDataSource 的包中导入,在本例中为 bokeh.models.