nuke1234567 2023-08-25 18:44 采纳率: 73.8%
浏览 0
已结题

我想把WinMo类中getMo方法中得到tstdata和comdata数据赋值给本类data1属性和data2属性,再在WinLoc类引用WinMo类中data1属性和data2属性,请问应该怎么做

我想把WinMo类中getMo方法中得到tstdata和comdata数据赋值给本类data1属性和data2属性,再在WinLoc类引用WinMo类中data1属性和data2属性,请问应该怎么做?一下代码是自己想到的方法但是引用的属性仍为空,请帮忙解决一下!


class WinMo(QWidget,mo):
    data1 = [] #属性
    data2 = [] #属性
    def __init__(self, *args, **kwargs):
        super(WinMo, self).__init__(*args, **kwargs)
        self.setupUi(self)
        self.scanButton.clicked.connect(self.getMo)
    def getMo(self):
        tstsql = '''
          
                 '''
        orcur.execute(tstsql)
        tstdata = orcur.fetchall()
        self.data1 = tstdata #传到本类的属性中
        print("1号筛选总数据",tstdata)
        comsql = '''
                 '''
        sqlcur.execute(comsql)
        comdata = sqlcur.fetchall()
        self.data2 = comdata #传到本类的属性中
        print("2号筛选总数据是",comdata)
        break


class WinLoc(QTableWidget,loc):
    def __init__(self, *args, **kwargs):
        self.loadData()
    def loadData(self):
        self.mo = WinMo()
        print("1号准备加载数据",self.mo.data1) #引用WinMo类属性
        print("2号准备加载数据",self.mo.data2) #引用WinMo属性

if __name__ == '__main__':
    app = QApplication(sys.argv)
    win1 = WinMo()
    win1.show()
    sys.exit(app.exec_())
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-08-26 04:14
    关注

    【以下回答由 GPT 生成】

    在Python中,可以使用实例变量和类变量来解决这个问题。

    实例变量是每个实例对象所拥有的变量,而类变量是所有实例对象共享的变量。

    在WinMo类中,data1和data2属性应该定义为类变量,而不是实例变量。这样才能在不同实例之间共享数据。

    在getMo方法中,可以直接通过类名WinMo来访问类变量,并将tstdata和comdata赋值给data1和data2属性。

    在WinLoc类中,创建WinMo实例对象,并通过该对象访问WinMo类中的data1和data2属性。

    以下是优化后的代码:

    class WinMo(QWidget, mo):
        data1 = [] # 类变量
        data2 = [] # 类变量
    
        def __init__(self, *args, **kwargs):
            super(WinMo, self).__init__(*args, **kwargs)
            self.setupUi(self)
            self.scanButton.clicked.connect(self.getMo)
    
        def getMo(self):
            """
            在getMo方法中获取tstdata和comdata数据,将其赋值给WinMo类的data1和data2属性
            """
            tstsql = '''
                     '''
            orcur.execute(tstsql)
            tstdata = orcur.fetchall()
            WinMo.data1 = tstdata # 赋值给类变量
            print("1号筛选总数据", tstdata)
    
            comsql = '''
                     '''
            sqlcur.execute(comsql)
            comdata = sqlcur.fetchall()
            WinMo.data2 = comdata # 赋值给类变量
            print("2号筛选总数据是", comdata)
            break
    
    class WinLoc(QTableWidget, loc):
        def __init__(self, *args, **kwargs):
            self.loadData()
    
        def loadData(self):
            """
            在WinLoc类中引用WinMo类中的data1属性和data2属性
            """
            print("1号准备加载数据", WinMo.data1) # 引用WinMo类的data1属性
            print("2号准备加载数据", WinMo.data2) # 引用WinMo类的data2属性
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        win1 = WinMo()
        win1.show()
        sys.exit(app.exec_())
    

    现在,假设WinMo类的实例对象调用了getMo方法,会将tstdata赋值给WinMo类的data1属性,将comdata赋值给WinMo类的data2属性。而在WinLoc类中,可以通过类名WinMo来访问WinMo类的data1和data2属性。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月3日
  • 已采纳回答 8月26日
  • 创建了问题 8月25日

悬赏问题

  • ¥15 本人本科机械,目前研一。没有深度学习基础,目前对研究生课题一片迷茫,请教各位!
  • ¥15 关于R语言单因素与多因素线性回归的平均值
  • ¥15 服务器清除BIOS之后引导不了
  • ¥15 CPLEX用OPL编写的混合整数线性优化问题。
  • ¥15 可以用EasyConnect连接实验室内网,但无法连接内网才能访问的服务器,为什么?
  • ¥15 前端预览docx文件,文件从后端传送过来。
  • ¥15 层次聚类和蛋白质相似度
  • ¥25 主成分分析中的第一第二主成分分别代表哪些参数
  • ¥15 oracle数据库查询语句问题
  • ¥15 有没有c++绘制算法的佬们吗救孩一下