2017-11-30 4 views
0

をインポート:Pythonのボケは、例えば、2回の異なるパスで特定のクラスをインポートすることが可能であるPythonのボケで論理

from bokeh.plotting import ColumnDataSource 

作品、ならびに:

from bokeh.models import ColumnDataSource 

は、背後にあるロジックは何ですかそれ?ドキュメントからの例を使用するときに、インポートパスがどのように(いつも異なっているように)驚くべきであることは丁寧ではないと思います。

答えて

2

Y商品番号bokeh.plottingColumnDataSourcebokeh.modelsから輸入されています。この振る舞いは、クラスが異なる名前空間にインポートされる方法の結果です。あなたの最善の行動は、ColumnDataSourceが定義されているパッケージ(この場合はbokeh.models)からのインポートです。

0

この場合、競合を避けるために行います。運がよければ、とにかく同じクラスが参照され、最悪の場合、あなたはこの場合

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

いくつかの厄介なproblem.sを持っているかもしれないが、彼らは両方とも同じです。

print pcd.__mro__ 
print mcd.__mro__ 

" '、' bokeh.models.sources.DataSource '>、' bokeh.models.sources.CallbackDataSource '>、' bokeh.models.sources.Model '>、' bokeh.core.properties.HasProps '>、' bokeh.util.callback_manager.CallbackManager ' >、

関連する問題