我是pyhton的新人。 我尝试写一个简单的身份证阅读器和编辑器。 我使用tkinter和一个Character类创建了一个窗口类,该类读取卡片并显示卡片并允许编辑。 我简化了代码并删除了许多部分。因为一切正常,但我找不到将两个实例的彼此属性从一个引用到另一个的方法。 我想让两个班级分开。我知道可以将窗口类属性继承到Character。但我不想要它。
import tkinter
class CreateWindow :
def __init__(self, width):
self.width=width
self.myCharacter=None
self.CharacterLoaded=False
self.CreateChar()
def CreateChar (self):
self.myCharacter=Character("George")
def CheckMyList (self):
print (CharacterLoaded)
for i in self.myCharacter.Mylist:
print(i)
class Character :
def __init__(self, name):
self.name = name
self.Mylist=[2,3,4,5,6]
print ("Character created")
MainWindow.CharacterLoaded=True
MainWindow.CheckMyList()
MainWindow=CreateWindow(600)
错误: NameError:name' MainWindow'没有定义 创建角色
MainWindow是CreateWindow类的一个实例,它只是整个会话期间的一个实例。但是每个文件都将在MainWindow Class中创建一个Character类的新实例。
如何使用此类交叉引用?
答案 0 :(得分:0)
MainWindow是CreateWindow类的一个实例,它只是整个会话期间的一个实例。但是每个文件都将在MainWindow Class中创建一个Character类的新实例。
如果我理解正确,您就不需要将Character
实例保留在MainWindow
内。
您在整个应用程序中有一个全局MainWindow
实例,在其他模块中,您可以执行以下操作:
from main_window import MainWindow
character = Character('this module')
MainWindow.CheckMyList(character)
另一个模块:
from main_window import MainWindow
character = Character('that module')
MainWindow.CheckMyList(character)
而CheckMyList
将会如下所示:
def CheckMyList (self, character):
for i in character.Mylist:
print(i)
或者反之亦然,它可以是Character
类方法,您可以将窗口实例传递给它。
旁注:检查python样式指南(https://www.python.org/dev/peps/pep-0008/),你的python代码格式是非常罕见的。