我是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方法时,我得到了预期的结果。
我的任务在这里,
如何在B类中导入A类方法以及如何在B类中调用A类方法?
如果第一个问题的答案是继承(多级),那么第一个问题是否还有其他解决方案?
还是让我对继承和将类方法导入一个类感到困惑?还是两者相同?
即使继承也是我在第二种方法中所做的,我无法使用iterate_db方法(它引发错误。)如何在子类中调用父方法?
请有人帮我。
答案 0 :(得分:1)
尽管您的方法没有获得self
作为其第一个参数(代表类实例),但仍需要将其定义为静态方法,以在没有类实例的情况下使用。
这里需要的是一个静态方法(假设您不需要可用的LocalDb
类的实例。
使用@staticmethod
装饰器-for docomentation。
使用from filename import LocalDb
导入类,其方法将随之提供。
irrelevent,如果我们使用的是静态方法。
super
-link的文档,用于访问继承的类。在夏季,您的代码实现看起来像这样:
class LocalDb:
@staticmethod
def insert_method():
pass