Python: Class A创建了Classes B和C的实例,B和C如何调用A中的函数或相互调用函数?
Python: Class A Creates Instances of Classes B and C, how can B and C call functions in A or each other?
我有三个 classes 需要放在单独的文件中:
A、B 和 C
A 创建 B 和 C。现在我需要 B 能够告诉 A 它是时候对 C 做些什么了。如何做到这一点?
在我的具体情况下,我使用 tkinter 创建多个 windows,当有人点击一个 window 中的按钮时,我想切换到另一个 window .然而,因为 python 首先创建 windows 很慢,我想预加载它们并在屏幕管理器中保持任何共享信息在它们之间切换。
我已经尝试了一些方法,对我来说最有希望的解决方案是创建另一个对象,该对象是 A(比如 P)的父对象。现在我可以将 A 传递给 B 和 C 中的函数,然后从 B 和 C 调用 A 的函数。而且因为我可以导入父对象,而不用担心循环导入,我可以告诉 B 和 C 定义了哪些函数A. 无法弄清楚如何告诉 B 和 C A 是 P 类型,但问题是似乎没有办法将对象从一个 class 转换为另一个 [=12] =]
对于如何解决这个问题有什么想法或其他更好的解决方案吗?
您可以使用 class A
的实例初始化 B
,例如 self.A
,将其设置为生成此 [=] 的 A
的实例12=] 并使用它来调用 A
中影响 C
的函数。一切就绪后,来自 B
实例的调用应如下所示:self.A.dosomethingwithC()
拿一个代码样本来玩弄会更容易解释。
这是我的意思的一个例子:
File1.py:
from File2 import *
class A():
def __init__(self):
self.myB = B(self)
self.myC = C()
def doCthing(self):
self.myC.go()
someA = A()
someA.myB.doC()
File2.py
class B():
def __init__(self,myA):
self.myA = myA
def doC(self):
self.myA.doCthing()
class C():
def __init__(self):
pass
def go(self):
print("Made it")
我有三个 classes 需要放在单独的文件中: A、B 和 C
A 创建 B 和 C。现在我需要 B 能够告诉 A 它是时候对 C 做些什么了。如何做到这一点?
在我的具体情况下,我使用 tkinter 创建多个 windows,当有人点击一个 window 中的按钮时,我想切换到另一个 window .然而,因为 python 首先创建 windows 很慢,我想预加载它们并在屏幕管理器中保持任何共享信息在它们之间切换。
我已经尝试了一些方法,对我来说最有希望的解决方案是创建另一个对象,该对象是 A(比如 P)的父对象。现在我可以将 A 传递给 B 和 C 中的函数,然后从 B 和 C 调用 A 的函数。而且因为我可以导入父对象,而不用担心循环导入,我可以告诉 B 和 C 定义了哪些函数A. 无法弄清楚如何告诉 B 和 C A 是 P 类型,但问题是似乎没有办法将对象从一个 class 转换为另一个 [=12] =]
对于如何解决这个问题有什么想法或其他更好的解决方案吗?
您可以使用 class A
的实例初始化 B
,例如 self.A
,将其设置为生成此 [=] 的 A
的实例12=] 并使用它来调用 A
中影响 C
的函数。一切就绪后,来自 B
实例的调用应如下所示:self.A.dosomethingwithC()
拿一个代码样本来玩弄会更容易解释。
这是我的意思的一个例子:
File1.py:
from File2 import *
class A():
def __init__(self):
self.myB = B(self)
self.myC = C()
def doCthing(self):
self.myC.go()
someA = A()
someA.myB.doC()
File2.py
class B():
def __init__(self,myA):
self.myA = myA
def doC(self):
self.myA.doCthing()
class C():
def __init__(self):
pass
def go(self):
print("Made it")