gpt4 book ai didi

python - python如何在两个类之间相互调用?

转载 作者:太空宇宙 更新时间:2023-11-03 14:14:26 33 4
gpt4 key购买 nike

有 2 个类:class Aclass B。在A类中,我想调用B类中的一个方法。同时,在 class B 中,我想调用 class A 中的方法。喜欢:

class A(object):
"""docstring for A"""
def __init__(self):
self.str_A = 'this is class A'
def printA(self):
print self.str_A
def callB(self):
B.printB()

class B(object):
"""docstring for B"""
def __init__(self):
self.str_B = 'This is class B'
def printB(self):
print self.str_B
def callA(self):
A.printA()

我怎样才能做到这一点?

嗯,我修正了我的表情。

class A(object):
"""docstring for A"""
def __init__(self):
self.str_A = 'this is class A'
def printA(self):
print self.str_A
There is a function to call printB in class B names CB.
class B(object):
"""docstring for B"""
def __init__(self):
self.str_B = 'This is class B'
def printB(self):
print self.str_B
There is a function to call printA in class A names CA.

aaa = A()
bbb = B()
aaa.CB() or bbb.CA()

当然上面这句话是错误的。如何实现?python如何在两个类之间相互调用?

这是我的两个类:class Stock是接收股票数据的类,class Stock中的RtnTick可以自动更新。class TradeSystem是一个制作GUI的类,当点击按钮时,程序可以进行股票交易。GUI必须实时显示数据,所以当RtnTick更新数据时,我想调用self class TradeSystem 中的.e1_str.set() 用于显示。当我点击按钮时,我将调用 class Stock 中的 TradeCommit 进行交易。我省略了很多其他代码。这两个类很大。而且...你有解决这个问题的想法吗?我是 python 新手。谢谢。

class Stock(LtsAPI):   
def RtnTick(self,t):
global Sto,Configs_Path,Sto,AskPri,BidPri,AskVol,BidVol
contract = t.InstrumentID
if(contract in Sto):
#Here I want to call **self.e1_str.set()** in class TradeSystem.
def TradeCommit(self):
#This is a function to trading.


class TradeSystem(object):
def __init__(self):

self.root = Tk()

self.e1_str = StringVar()
self.e1 = Entry(self.root,textvariable = self.e1_str)
self.e1.bind('<KeyPress>')
self.e1.grid(row = 1, column = 0)

#**self.e1_str.set()** can set the content to display.

def Trade(self):
self.button = Button(self.root,command = *call **TradeCommit** in class Stock*)
#command is the function to run when triggered.

最佳答案

您正在寻找类方法(另一种语言的静态方法)

class A(object):
"""docstring for A"""
def __init__(self):
self.str_A = 'this is class A'
def printA(self):
print self.str_A
@classmethod
def CB(cls):
B().printB()

class B(object):
"""docstring for B"""
def __init__(self):
self.str_B = 'This is class B'
def printB(self):
print self.str_B
@classmethod
def CA(cls):
A().printA()

aaa = A()
bbb = B()
aaa.CB() or bbb.CA()
>>> This is class B
>>> this is class A

但是由于 printA() 和 printB() 需要一个实例,所以您需要实例化一个对象来调用它们

关于python - python如何在两个类之间相互调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34586707/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com