Python抽象调用基类中导入的库的正确方法

Python抽象调用基类中导入的库的正确方法,python,python-3.x,abstract-class,abc,Python,Python 3.x,Abstract Class,Abc,使用在抽象类的基类中导入的函数的正确方法是什么?例如:在base.py中,我有以下内容: import abc import functions class BasePizza(object): __metaclass__ = abc.ABCMeta @abc.abstractmethod def get_ingredients(self): """Returns the ingredient list.""" NameError: name

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

import abc
import functions 

class BasePizza(object):
    __metaclass__  = abc.ABCMeta

    @abc.abstractmethod
    def get_ingredients(self):
         """Returns the ingredient list."""
NameError: name 'functions' is not defined
然后我在
diet.py
中定义了该方法:

import base

class DietPizza(base.BasePizza):
    @staticmethod
    def get_ingredients():
        if functions.istrue():
            return True
        else:
            retrun False
然而,如果我试着跑

python diet.py
我得到以下信息:

import abc
import functions 

class BasePizza(object):
    __metaclass__  = abc.ABCMeta

    @abc.abstractmethod
    def get_ingredients(self):
         """Returns the ingredient list."""
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会重新使用已经创建的模块对象。

再次导入模块或将其委托给方法会有什么问题?。。。你说
从基本导入函数
导入base.py
是无效的python,我想。。。。除非你的文件布局真的很好,谢谢。我只是想确定这件事的正确程序。学习错误的方法没有好处。