python-3.x – 需要从不同的类调用类方法而不需要初始化第一个类
我的代码有一个小问题.
有两个班.第一个创建一个带有选项按钮的窗口.单击该按钮后,将调用第二个类并使用“确定”按钮创建另一个窗口.假设还有一个复选框,可以将背景颜色更改为黑色或类似的颜色.单击按钮后,选项中所做的任何更改都将存储到文件中,并关闭第二个窗口. 所有这一切都很好.我的问题是,现在我需要调用第一个类中的方法update_init,它将把这些更改应用到MainWindow.下面的代码显示了我对这个问题的第一个解决方案,但从我的理解,通过使用第二个主循环,我创建了第二个线程,应该避免. class MainWindow: def __init__(self,master): self.master = master self.options_btn = tk.Button(self.master,text="Options",command=self.open_options) self.options_btn.pack() self.options_window = None def open_options(self): options_master = tk.Toplevel() self.options_window = OptionsWindow(options_master) options_master.mainloop() lst = meta_load() # loads changes from a file self.update_init(lst) def update_init(self,lst): #code class OptionsWindow: def __init__(self,master): self.master = master self.ok_btn = tk.Button(self.master,text="OK",command=self.update_meta) self.ok_btn.pack() def update_meta(self): meta_save(12) # saves changes into a file self.master.destroy() main_master = tk.Tk() main_master.minsize(width=1280,height=720) b = MainWindow(main_master) main_master.mainloop() 我的第二个解决方案是将两个类放在一个,但如果我这样做,代码就会非常混乱. 我很抱歉,如果这太具体了,我试图尽可能地使它尽可能一般,但这是一个非常具体的问题,我无法在互联网上找到任何关于它的信息. 解决方法
一般情况下,你可以从你想要的任何地方调用一个类方法,并传递任何东西,而不需要初始化该类的实例,这要归功于python的客观特性,但要注意自我依赖!虽然,我认为这不是一个好习惯.
class A: def __init__(self): self.foo = 'foo' def return_foo(self): return self.foo class B: def __init__(self): self.bar = 'bar' print('Ha-ha Im inited!') def return_bar(self): try: return self.bar except AttributeError: return 'bar' def test(): a = A() # b = B() return_bar = getattr(B,'return_bar',None) if callable(return_bar): print('%s%s' % (a.return_foo(),return_bar(None))) test() 链接: > (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- day23:单继承&多继承&菱形继承&__init__魔术方
- Python是否有首选的BDD样式单元测试框架?
- 代码也浪漫:用 Python 放一场烟花秀!
- python – Heroku上的RQScheduler
- python – 使用REPA优化haskell中的平均图像颜色程序
- python – 更紧凑的ElementTree或lxml命名空间
- python – Django&South:添加新字段但出现“DatabaseE
- python – 如何在PyCharm中格式化多行TODO注释?
- 详解Python中的装饰器、闭包和functools的教程
- python – 为什么我需要保持一个指向我的QWidget的变量?