您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在创建从中继承的对象时在Python中进行条件导入

5b51 2022/1/14 8:21:30 python 字数 2243 阅读 512 来源 www.jb51.cc/python

我创建了一个连接到其他库的包(livelossplot).它有很多可选的依赖项(深度学习框架),我不想强??迫人们安装它们.现在我使用条件导入,本着以下精神:try: from .keras_plot import PlotLossesKeras except ImportError: # import keras plot only if

概述

我创建了一个连接到其他库的包(livelossplot).它有很多可选的依赖项(深度学习框架),我不想强??迫人们安装它们.

现在我使用条件导入,本着以下精神:

try:
    from .keras_plot import PlotLossesKeras
except ImportError:
    # import keras plot only if there is keras
    pass

但是,这意味着它会导入大型库,即使不打算使用它们也是如此.问题是:只有在创建特定对象时才能导入库?

对于Python函数,它很简单:

def function_using_keras():
   import keras
   ...

从其他类继承的类有什么好的做法?

在定义对象之前,似乎需要导入父类

from keras.callbacks import Callback
class PlotLossesKeras(Callback):
    ...

与尝试在对象初始化上进行导入相比,它有几个优点:

>用户知道会发生什么. import my_lib.keras很可能依赖于keras
>导入错误发生在导入期间,而不是在运行时
>通过不依赖于从未经插入的类继承的技巧,您可以避免许多潜在的问题
>只需更改import my_lib.keras以导入my_lib.tensorflow,最终用户就可以非常轻松地在实现之间切换

这样的解决方案可能看起来像

# mylib/__init__.py
class SomethingGeneric():
    pass

def something_else():
    pass

然后

# mylib/keras.py
import keras

class PlotLosses():
    pass

# mylib/tensorflow.py
import tensorflow

class PlotLosses():
    pass

总结

以上是编程之家为你收集整理的在创建从中继承的对象时在Python中进行条件导入全部内容,希望文章能够帮你解决在创建从中继承的对象时在Python中进行条件导入所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶