您可以指定一个元类,您可以在其中测试哪些模块是可导入的:
class Meta(type):
def __new__(cls, name, bases, attrs):
try:
import gtk
bases += (gtk.Window)
except ImportError:
# gtk module not available
pass
# Create the class with the new bases tuple
return super(Meta, cls).__new__(cls, name, bases, attrs)
class ToolWindow(common.Singleton):
__metaclass__ = Meta
...
这只是一个原始草图,显然可以做很多改进,但它应该可以帮助你开始.
您应该知道您应该从ToolWindow更改__init __()方法,因为它可能没有gtk模块可用(可能在元类中设置一个标志以便稍后检查模块是否可用;或者您甚至可以重新定义__init __()根据模块是否可用,从元类中的方法 – 有几种方法可以解决这个问题.