提问人:JaHe 提问时间:6/15/2023 最后编辑:MatthiasJaHe 更新时间:6/15/2023 访问量:41
Python - 如何将方法移动到其他模块
python - how to move methods to other module
问:
在使用 Cobol 和其他过程语言开发了 40 年后,我开始对 OOP 感到有些困惑。 我的主应用程序已经包含大量代码,因此我想逐步将一些实用程序方法移动到另一个模块。 这是该操作的一个小示例。 到目前为止,使它具有预期结果的唯一方法是使用对象“objmod”。 这看起来不是很正统。 有没有更方便的方法?
主应用*****************************************************
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton
import sys
import module1
import sqlite3
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("My App")
self.button = QPushButton("Insert data from work01 into work02")
self.button.clicked.connect(self.envoi)
self.setCentralWidget(self.button)
def envoi(self):
mod1 = module1.clmod1 #<<<< USING THE MODULE 'module1'
mod1.insert(self)
############## WE HAVE MOVED ##################
"""def cleanWork02(self):
self.connecter()
self.cur.execute('''DELETE FROM Work02''')"""
###############################################
def execute(self, sql):
self.connecter()
self.cur.execute(sql)
self.conexion.commit()
def connecter(self):
self.db = 'C:\TestPyth\Base.db'
self.conexion = sqlite3.connect(self.db)
self.cur = self.conexion.cursor()
self.conexion.commit()
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec()
模块****************************************************
import sqlite3
class clmod1:
def insert(self):
objmod = clmod1
objmod.cleanWork02(self)
sql = '''INSERT INTO Work02 (field1,field2,field3)
SELECT Work01.field1,Work01.field2,Work01.field3
FROM Work01'''
self.execute(sql)
def cleanWork02(self):
sql = '''DELETE FROM Work02'''
self.execute(sql)```
***********************************************************************************************
inside the 'insert method' if I use 'self.cleanWork02()' instead of 'objmod.cleanWork02(self)',
it says "AttributeError: 'MainWindow' object has no attribute 'cleanWork02'
答: 暂无答案
评论