Python 抽象调用Base中导入的库的正确方法Class

Python Abstract Proper Way of Calling Library Imported in Base Class

使用在抽象 class 的基 class 中导入的函数的正确方法是什么?例如:在 base.py 我有以下内容:

import abc
import functions 

class BasePizza(object):
    __metaclass__  = abc.ABCMeta

    @abc.abstractmethod
    def get_ingredients(self):
         """Returns the ingredient list."""

然后我在diet.py中定义方法:

import base

class DietPizza(base.BasePizza):
    @staticmethod
    def get_ingredients():
        if functions.istrue():
            return True
        else:
            retrun False

但是,如果我尝试 运行

python diet.py

我得到以下信息:

NameError: name 'functions' is not defined

如何让 diet.py 识别由 base.py 导入的库?

抽象方法不关心实现细节

如果您的特定具体实现需要特定模块,则需要将其导入到您的模块中:

import base
import functions


class DietPizza(base.BasePizza):
    @staticmethod
    def get_ingredients():
        return functions.istrue()

请注意,在多个地方导入模块不需要任何额外费用。 Python 当一个模块在多个其他模块中使用时,重新使用已经创建的模块对象。