gpt4 book ai didi

database - python : How to call a class methods(parent) in another class methods(child) only by importing class files(parent to child)?

转载 作者:搜寻专家 更新时间:2023-10-30 23:28:17 24 4
gpt4 key购买 nike

我是 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()

当我厌倦上面的事情时,我得到“类型错误:必须使用 LocalDb 实例作为第一个参数调用未绑定(bind)方法 iterate_db()(取而代之的是 classobj 实例)”

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

这是我的问题,

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

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

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

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

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

最佳答案

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

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

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

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

  3. 如果我们使用静态方法则无关紧要。
  4. 这里的一般知识是 super 的文档 - link , 它用于访问继承的类。

在夏天,你的代码的实现看起来像这样:

class LocalDb:
@staticmethod
def insert_method():
pass

关于database - python : How to call a class methods(parent) in another class methods(child) only by importing class files(parent to child)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53294192/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com