【问题标题】:Python : How to call a class methods(parent) in another class methods(child) only by importing class files(parent to child)?Python:如何仅通过导入类文件(父到子)来调用另一个类方法(子)中的类方法(父)?
【发布时间】:2024-04-30 14:55:02
【问题描述】:

我是 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:必须以 LocalDb 实例作为第一个参数调用未绑定的方法 iterate_db()(而不是获取 classobj 实例)”

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

我的问题在这里,

  1. B类中如何导入A类方法,B类中如何调用A类方法?

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

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

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

请有人帮我解决这个问题。

【问题讨论】:

    标签: database python-2.7 inheritance sqlite


    【解决方案1】:

    虽然您的方法没有将self 作为其第一个参数(表示类实例),但需要将其定义为静态方法才能在没有类实例的情况下使用。

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

    1. 使用 @staticmethod 装饰器 - for docomentation。 使用from filename import LocalDb 导入类,它的方法将随之而来。

    2. 如果我们使用的是静态方法,则无关紧要。

    3. 与我们使用静态方法无关。
    4. 一般知识这里是super-link的文档,用来访问继承的类。

    总而言之,您的代码实现如下所示:

    class LocalDb:
        @staticmethod
        def insert_method():
           pass
    

    【讨论】:

      最近更新 更多