引用实例作为全局变量
import logging, configparser, sys, os, json, time, logging, sseclient, urllib3,re, threading, pandas as pd, datetime, requests from PyQt5.QtWidgets import QApplication, QWidget, QGridLayout logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s: %(message)s') from strategy.w_BigMidSmall_liangbi_pool import w_bms_liangbi class thread1(threading.Thread): def __init__(self): super(thread1, self).__init__() self.ok = 'ok' def func1(self,arg): print('func1', arg) class thread2(threading.Thread): def __init__(self): global thread1 #这里引用的是实例,不是类,因为 thread1在后面被创建了实例 threading.Thread.__init__(self) def run(self) -> None: print('i am sub') thread1.func1( 1) #用实例来执行函数,不用self thread1.func1(thread1.ok) #用实例来执行函数,不用self def run(self) -> None: print('i am main') t1 = self.thread2() t1.start() thread1 = thread1() thread1.start()
下面是把类作为全局变量,不建议采用,因为属性值不好获取
import logging, configparser, sys, os, json, time, logging, sseclient, urllib3,re, threading, pandas as pd, datetime, requests from PyQt5.QtWidgets import QApplication, QWidget, QGridLayout logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s: %(message)s') from strategy.w_BigMidSmall_liangbi_pool import w_bms_liangbi class thread1(threading.Thread): def __init__(self): super(thread1, self).__init__() self.ok = 'ok' def func1(self,arg): print('func1', arg) class thread2(threading.Thread): def __init__(self): global thread1 #这里引用的是类 threading.Thread.__init__(self) def run(self) -> None: print('i am sub') thread1.func1(self, 1) #调用父类函数,必须加self,或者用thread1 thread1.func1(self, thread1().ok) #调用父类函数,必须加self,或者用thread1,如果引用父类实例的属性值,还必须再次实例一次,但有可能和真正的实例属性是不同的,所以不要用这种写法 def run(self) -> None: print('i am main') t1 = self.thread2() t1.start() t = thread1() t.start()