Python:如何仅通过导入类文件(父级到子级)在另一个类方法(子级)中调用类方法(父级)?

时间:2018-11-14 06:20:05

标签: database python-2.7 inheritance sqlite

我是Python的新手,从现在开始尝试开发产品框架。在类文件A中,我编写了数据库访问功能,例如插入,删除,选择和更新。在主类文件中,我必须导入所有上述函数,并且必须使用A类函数。

到目前为止,我没有采取以下措施, 基类     导入sqlite3     从sqlite3导入错误

class LocalDb:
    def insert_method():
       pass

已经将insert_method导入到下面的类中。     从access_db.local_db.local_db导入LocalDb

class Main():

    def __init__(self):
        pass

    def change(self):
        LocalDb.iterate_db()

if __name__ == '__main__':
    main = Main()
    main.change()

当我对“ TypeError:未绑定方法iterate_db()必须以LocalDb实例作为第一个参数(而不是class classobj实例)进行调用”感到烦恼

也。我尝试过,Main(LocalDb)继承了LocalDd的方法,但是我遇到一个错误,说“ sqlite3.OperationalError:没有这样的表:专辑”(但是在db中,我们在db中有“相册”表),在这里我感到困惑当我在LocalDb类文件中使用insert_db方法时,我得到了预期的结果。

我的任务在这里,

  1. 如何在B类中导入A类方法以及如何在B类中调用A类方法?

  2. 如果第一个问题的答案是继承(多级),那么第一个问题是否还有其他解决方案?

  3. 还是让我对继承和将类方法导入一个类感到困惑?还是两者相同?

  4. 即使继承也是我在第二种方法中所做的,我无法使用iterate_db方法(它引发错误。)如何在子类中调用父方法?

请有人帮我。

1 个答案:

答案 0 :(得分:1)

尽管您的方法没有获得self作为其第一个参数(代表类实例),但仍需要将其定义为静态方法,以在没有类实例的情况下使用。

这里需要的是一个静态方法(假设您不需要可用的LocalDb类的实例。

  1. 使用@staticmethod装饰器-for docomentation。 使用from filename import LocalDb导入类,其方法将随之提供。

  2. irrelevent,如果我们使用的是静态方法。

  3. 如果使用的是静态方法,则为irrelevent。
  4. 出于常识,这里是super-link的文档,用于访问继承的类。

在夏季,您的代码实现看起来像这样:

class LocalDb:
    @staticmethod
    def insert_method():
       pass