gpt4 book ai didi

python - 我如何将一个类变量传递给另一个类?

转载 作者:太空宇宙 更新时间:2023-11-04 00:07:35 25 4
gpt4 key购买 nike

我正在制作条形码生成器。我需要类 GUI 中的输入由类 Barcode 读取,以便它可以在 Canvas 上打印线条。

from tkinter import *
class GUI(Frame):
def __init__(self, master=None):
...
self.code_input = Entry(master)
self.code_input.pack()
self.code = self.code_input.get()
...
self.barcode = Barcode(master, height=250, width=200)
self.barcode.pack()
self.barcode.draw()
....

class Barcode(Canvas):
def draw(self):
self.ean = GUI.code

如果我像上面那样直接引用它说 AttributeError: type object 'GUI' has no attribute 'code'

如果我做继承方法(基于https://stackoverflow.com/a/19993844/10618936),class Barcode(Canvas, GUI) 和前面的一样

如果我使用 setter 和 getter 方法:

class GUI(Frame)
def __init__(self, master=None):
...
@property
def code(self):
return self.__code

@code.setter
def code(self, code):
self.__code = code

然后self.ean = GUI.code,它不会运行程序并说TypeError: 'property' 对象不可订阅 而不是

我该如何解决这个问题?我的程序结构真的很糟糕吗?我真的一点都不擅长编程...我只是想将 GUI 中的变量传递给 Barcode 类,以便它可以计算并将结果返回给 GUI 以显示条形码

最佳答案

您需要创建GUI 的实例,否则您只是引用未定义code 的静态类。您可以像本示例中那样访问它

class A():
def __init__(self):
self.code = "A"

class B():
def __init__(self):
self.code = "B"
def foo(self):
print(self.code + A().code)

b = B()
b.foo() # Outputs "BA"

否则,要像类中的静态变量一样访问它,您需要在类根级别中定义它

class A():
code = "C"
def __init__(self):
self.code = "A"

class B():
def __init__(self):
self.code = "B"
def foo(self):
print(self.code + A.code)

b = B()
b.foo() # Outputs "BC"

关于python - 我如何将一个类变量传递给另一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53554313/

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