簡體   English   中英

Python:類A創建類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?

我有三個類需要放在單獨的文件中:A,B和C

A創建B和C。現在我需要B能夠告訴A它是時候對C進行操作了。該怎么做?

在我的特定情況下,我正在使用tkinter創建多個窗口,並且當某人單擊一個窗口中的按鈕時,我想切換到另一個窗口。 但是,由於python首先創建窗口很慢,因此我想預加載所有窗口,然后在它們之間進行切換,以保留屏幕管理器中的所有共享信息。

我嘗試了一些事情,對我來說最有前途的解決方案是創建另一個對象,該對象是A的父對象(例如P)。 現在,我可以將A傳遞到B和C中的函數中,然后再從B和C中傳遞,我可以調用A的函數。由於可以導入父級,而不必擔心循環導入,因此我可以告訴B和C定義了哪些函數A.盡管存在問題,似乎沒有辦法將一個對象從一個類轉換到另一個類,但很難弄清楚如何告訴B和C A是P類型的。

一般情況下,您對此有何想法或其他更好的解決方案?

您可以A類似於self.A的類A的實例來初始化B ,將其設置為生成該BA的實例,並使用它來調用影響C A中的函數。 一切就緒后,您從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")

是`a

[英]Is `a<b<c` valid python?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM