Python Abstract Proper Way of Calling Library Imported in Base Class
使用抽象类的基类中导入的函数的正确方法是什么?例如:在
1 2 3 4 5 6 7 8 9 | import abc import functions class BasePizza(object): __metaclass__ = abc.ABCMeta @abc.abstractmethod def get_ingredients(self): """Returns the ingredient list.""" |
然后我在
1 2 3 4 5 6 7 8 9 | import base class DietPizza(base.BasePizza): @staticmethod def get_ingredients(): if functions.istrue(): return True else: retrun False |
号
但是,如果我试着跑
1 | python diet.py |
我得到以下信息:
1 | NameError: name 'functions' is not defined |
。
如何让
抽象方法本身不关心实现细节。
如果您需要一个特定的模块来实现特定的具体实现,您需要在模块中导入该模块:
1 2 3 4 5 6 7 8 | import base import functions class DietPizza(base.BasePizza): @staticmethod def get_ingredients(): return functions.istrue() |
请注意,在多个位置导入模块不需要额外的费用。当一个模块在多个其他模块中使用时,python会重新使用已经创建的模块对象。