Python 在类之间传递变量

2023-12-28

我正在尝试为游戏创建角色生成向导。在一堂课中,我计算了角色的属性。在不同的班级中,我根据角色的属性向用户显示哪些专业可用。但是,我不记得如何在不同类之间传递变量。

这是我所拥有的示例:

class BasicInfoPage(wx.wizard.WizardPageSimple):            
    def __init__(self, parent, title):
         wiz.WizardPageSimple.__init__(self, parent)
         self.next = self.prev = None
         self.sizer = makePageTitle(self, title)

                    <---snip--->

         self.intelligence = self.genAttribs()

class MOS(wx.wizard.WizardPageSimple):
     def __init__(self, parent, title):
         wiz.WizardPageSimple.__init__(self, parent)
         self.next = self.prev = None
         self.sizer = makePageTitle(self, title)
      def eligibleMOS(self, event):
          if self.intelligence >= 12: 
               self.MOS_list.append("Analyst")

问题是我不知道如何使用 BasicInfoPage 类中的“智能”变量到 MOS 类。我已经尝试了互联网上的几种不同的方法,但似乎没有任何效果。我缺少什么?

Edit发完这篇文章后我意识到我没有解释得那么清楚。我正在尝试创建 20 世纪 80 年代 Twilight 2000 RPG 的电脑版本。

我正在使用 wxPython 创建一个向导;我的类的父类是 wxPython 中的 Wizard。该向导将引导用户完成角色的创建,因此基本信息页面(BasicInfoPage 类)允许用户提供角色的名称和角色属性的“滚动”。这就是“自我智慧”的由来。

我正在尝试使用为向导中的后续页面创建的属性,用户可以在其中选择角色的专长。可用的专业取决于角色所具有的属性,例如如果智力足够高,该角色可以成为英特尔分析师。

我已经好几年没有编程了,尤其是使用 OOP 思想。这就是为什么我对如何使用类和方法创建本质上是全局变量的内容感到困惑。


您可能会混淆“类”和“实例”。从您的示例中尚不清楚,因此我假设您使用了大量的类定义,并且没有这些类的适当的对象实例。

类实际上没有可用的属性值。类只是对象集合的一组通用定义。您应该将类​​视为定义,而不是实际的事物。

类的实例,即“对象”,是具有实际属性值并执行方法函数的实际事物。

你不传递变量classes。您在之间传递变量实例。实际上,只有实例变量很重要。 [是的,有类变量,但它们是一个相当专业且经常令人困惑的东西,最好避免。]

当您创建一个对象(类的实例)时

b= BasicInfoPage(...)

Then b.intelligence是智力的价值b的实例BasicInfoPage.

一个非常常见的事情是

class MOS( wx.wizard.PageSimple ):
    def __init__( self, parent, title, basicInfoPage ):
        <snip>
        self.basicInfo= basicInfoPage

现在,在 MOS 方法中,您可以说self.basicInfo.intelligence因为 MOS 有一个可用的 BasicInfoPage 对象。

当您构建 MOS 时,您向它提供它应该使用的 BasicInfoPage 实例。

someBasicInfoPage= BasicInfoPage( ... ) 
m= MOS( ..., someBasicInfoPage )

现在,对象m可以检查someBasicInfoPage.intelligence

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 在类之间传递变量 的相关文章

随机推荐