几天来,我一直在尝试将一个变量的示例从一个类传递到另一个类,直到最近我才能让它工作。我读了这篇关于类和示例的文档,我在网上搜索了stackoverflow,我一直没有得到答案,直到我尝试了以前问过的question的解决方案,它解决了我的问题。然而,我不太确定它的“为什么”和“如何”工作。
我的代码如下所示:
from tkinter import *
def main():
main_window = Tk()
app = First(main_window)
main_window.mainloop()
class First:
def __init__(self, root):
self.root = root
self.root.title('First Window')
self.entry1 = Entry(self.root)
self.entry1.pack()
btn = Button(self.root, text="click", command=self.clicked)
btn.pack()
def clicked(self):
writeDoc(First=self)
class writeDoc:
def __init__(self, First):
self.First = First
txt = self.First.entry1.get()
print(txt)
if __name__ == '__main__'
main()
在类writeDoc
下,每当我将鼠标悬停在参数First
上时,它不是对Class First
的引用,因此我不确定它如何访问entry1
。对于writeDoc(First=self)
中的First
也是如此。另外,为什么writeDoc(First=self)
可以工作,而writeDoc(self.First)
不能工作?
我假设当我想引用另一个类并想传递它的示例时,我需要执行以下操作
class First:
....
def clicked(self):
writeDoc(First)
....
class writeDoc(First):
def __init__(self, First):
super().__init__(First):
...
但是,这对我根本不起作用。
我希望这不是一个加载/混乱的问题,我想了解这是如何工作的,以创建更好的代码,避免误解python类是如何工作的。
1条答案
按热度按时间6pp0gazn1#
在
clicked()
方法中,self
引用First
类的示例。它将该示例作为
First
参数的值传递给writeDoc
类的__init__()
方法。这与将任何其他对象作为方法参数传递没有什么不同。writeDoc(self.First)
不起作用,因为self
示例中没有First
属性。First
是类的名称,而不是属性。