Python 从所有者类实例交叉引用嵌套类实例的属性

Python 从所有者类实例交叉引用嵌套类实例的属性,python,class,oop,attributes,Python,Class,Oop,Attributes,我是Pyton的新手。 我试着写一个简单的身份证阅读器和编辑器。 我使用tkinter和Character类创建了一个窗口类,该类读取卡片并显示卡片并允许编辑。 我简化了代码并删除了许多部分。因为任何东西都可以工作,但我找不到一种方法将两个实例的属性从一个引用到另一个。 我想把两个班级分开。我知道可以将窗口类属性继承到角色。但我不想要它 下面是简化的代码。 错误: NameError:未定义名称“MainWindow” 角色创建 MainWindow是CreateWindow类的一个实例,在整

我是Pyton的新手。 我试着写一个简单的身份证阅读器和编辑器。 我使用tkinter和Character类创建了一个窗口类,该类读取卡片并显示卡片并允许编辑。 我简化了代码并删除了许多部分。因为任何东西都可以工作,但我找不到一种方法将两个实例的属性从一个引用到另一个。 我想把两个班级分开。我知道可以将窗口类属性继承到角色。但我不想要它

下面是简化的代码。
错误: NameError:未定义名称“MainWindow” 角色创建

MainWindow是CreateWindow类的一个实例,在整个会话期间它将仅是一个实例。但每个文件都将在MainWindow类中创建和创建一个新的Character类实例

如何使用这种交叉引用

MainWindow是CreateWindow类的一个实例,在整个会话期间它将仅是一个实例。但每个文件都将在MainWindow类中创建和创建一个新的Character类实例

如果我理解正确,就不需要将
字符
实例保留在
主窗口

在整个应用程序和其他模块中,您有一个全局
MainWindow
实例,您可以执行以下操作:

from main_window import MainWindow

character = Character('this module')
MainWindow.CheckMyList(character)
def CheckMyList (self, character):
    for i in character.Mylist:
        print(i)
另一个模块:

from main_window import MainWindow

character = Character('that module')
MainWindow.CheckMyList(character)
相应地,
CheckMyList
将如下所示:

from main_window import MainWindow

character = Character('this module')
MainWindow.CheckMyList(character)
def CheckMyList (self, character):
    for i in character.Mylist:
        print(i)
或者,反之亦然,它可以是
Character
类方法,并将窗口实例传递给它

旁注:查看python样式指南(),您格式化python代码的方式在python中非常少见

MainWindow是CreateWindow类的一个实例,在整个会话期间它将仅是一个实例。但每个文件都将在MainWindow类中创建和创建一个新的Character类实例

如果我理解正确,就不需要将
字符
实例保留在
主窗口

在整个应用程序和其他模块中,您有一个全局
MainWindow
实例,您可以执行以下操作:

from main_window import MainWindow

character = Character('this module')
MainWindow.CheckMyList(character)
def CheckMyList (self, character):
    for i in character.Mylist:
        print(i)
另一个模块:

from main_window import MainWindow

character = Character('that module')
MainWindow.CheckMyList(character)
相应地,
CheckMyList
将如下所示:

from main_window import MainWindow

character = Character('this module')
MainWindow.CheckMyList(character)
def CheckMyList (self, character):
    for i in character.Mylist:
        print(i)
或者,反之亦然,它可以是
Character
类方法,并将窗口实例传递给它


旁注:查看python样式指南(),您格式化python代码的方式在python中非常少见。

但是您根本没有创建任何名为MainWindow的东西。我删除了窗口配置部分,因为它可以正常工作。否则代码会很长。如果这个交叉引用不起作用..这就是问题所在。。我无法从character实例调用MainWindow的方法,因此window类将了解character的属性并显示它。。然后调用角色实例并将其保存。抱歉MainWindow=CreateWindow(600)正在创建一个实例…但是代码在哪里?哦,抱歉,Daniel,我修复了它。这是我的第一个问题,所以我只是学习如何标记代码。但是你根本没有创建任何称为MainWindow的东西。我删除了窗口配置部分,因为它可以工作Daniel。否则代码会很长。如果这个交叉引用不起作用..这就是问题所在。。我无法从character实例调用MainWindow的方法,因此window类将了解character的属性并显示它。。然后调用角色实例并将其保存。抱歉MainWindow=CreateWindow(600)正在创建一个实例…但是代码在哪里?哦,抱歉Daniel,我修复了它。这是我的第一个问题,所以我只是学习如何标记代码。谢谢Boris,我会检查它。谢谢Boris,我会检查它。