2017-02-17 55 views
-2

所以我想要做的是在多个环境中运行一段代码。在模块存在的环境中,我可以继承它的类,但是模块不存在的地方,我不希望我的代码中断,并且不应该出现错误。继承自Python中不存在的类

try: 
    from school.modules import student 
except ImportError: 
    pass 

class MyWebAPP(student.StudentClass): 

我得到一个错误,学生没有定义。我想以某种方式绕过这个。 建议?

+0

如果导入成功,则将变量设置为True,并且只有当该值为true时,才使用导入的类/模块。否则,不要这样做。很想知道,如果学生导入失败,你的故障转移是什么? –

+0

你的班级如何利用可能从其他班级继承的方式?你有什么好处? – khelwood

+0

@ Vikash-正如我所说的代码旨在用于MULTIPLE环境中,在模块不存在的环境中,我们根本不打算使用它,因此模块中的类不应该被继承。这就是所谓的“故障转移”。 – CodePlorer

回答

2

将该类指定给变量,如果不存在,则使用object

try: 
    from school.modules import student 
    parent = student.StudentClass 
except ImportError: 
    parent = object 

class MyWebAPP(parent): 
    pass 

这可以防止你有重复之类的整个定义两个分支,但假定一切类中其他不需要依赖于所使用的基类的变化。

+0

太棒了!谢谢! – CodePlorer