当前位置:  开发笔记 > 编程语言 > 正文

Python在类之间传递变量

如何解决《Python在类之间传递变量》经验,为你挑选了1个好方法。

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

这是我的一个例子:

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类.我在互联网上尝试过几种不同的东西但似乎没什么用.我错过了什么?

编辑我在发布之后意识到我没有那么好解释.我试图从20世纪80年代创建一个计算机版本的Twilight 2000 RPG.

我正在使用wxPython来创建向导; 我的类的父类是来自wxPython的向导.该向导将引导用户创建一个字符,因此"基本信息"页面(类BasicInfoPage)允许用户为角色的属性提供角色的名称和"滚动".这就是"自我智能"的来源.

我正在尝试在向导中使用为她的页面创建的属性,用户可以选择角色的特性.可用的专业取决于角色的属性,例如,如果智力足够高,角色可以是英特尔Anaylst.

我编程已经好几年了,尤其是OOP创意.这就是为什么我对如何用类和方法创建本质上是全局变量感到困惑.



1> S.Lott..:

您可能会将"类"和"实例"混淆.从你的例子中不清楚,所以我假设你使用了很多类定义而没有这些类的适当对象实例.

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

类的实例"对象"是具有实际属性值和执行方法函数的实际事物.

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

创建对象(类的实例)时

b= BasicInfoPage(...)

然后b.intelligenceb实例的智力值BasicInfoPage.

一个非常普遍的事情是

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

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

构建MOS时,为它提供它应该使用的BasicInfoPage实例.

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

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

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有