【发布时间】:2020-04-05 11:19:30
【问题描述】:
我有一个看起来像这样的类:
class Foo:
import_extra = false
def __init__(import_extra):
if import_extra:
self.import_extra = true
import extra
def do_thing():
# do some stuff
if self.import_extra:
extra.do_extra_stuff()
这个类有一些依赖于extra 的功能,但是我希望能够在我第一次初始化这个类时决定这个功能是否可用,这在开始运行应用程序时会发生一次。不幸的是,我似乎无法弄清楚如何为整个班级导入extra,以便其他方法可以使用它。
我这样设计它是因为extra 模块在某些情况下可能无法导入。 do_thing 经常被调用,所以我希望可以避免将 import 语句放在那里。
有没有我想念的更简单的方法来做到这一点?
【问题讨论】:
-
如果不知道
extra做了什么或返回了什么,这很难说。class Foo有哪些特别重要的功能? -
目前的方法行之有效,对吧?
-
不,当我运行
foo = Foo(True); foo.do_thing()时,当前的方法给了我错误NameError: extra is not defined。我要解决的问题是导入语句在__init__方法的范围内,但我希望导入在初始化后可用于整个类。
标签: python python-3.x class import