我正在尝试为游戏创建角色生成向导.在一个班级中,我计算角色的属性.在另一个类中,我将根据角色的属性向用户显示哪些专业可用.但是,我不记得如何在不同的类之间传递变量.
这是我的一个例子:
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创意.这就是为什么我对如何用类和方法创建本质上是全局变量感到困惑.
您可能会将"类"和"实例"混淆.从你的例子中不清楚,所以我假设你使用了很多类定义而没有这些类的适当对象实例.
类实际上没有可用的属性值.类只是对象集合的一组通用定义.您应该将类视为定义,而不是实际的事物.
类的实例"对象"是具有实际属性值和执行方法函数的实际事物.
您不在类之间传递变量.您在实例之间传递变量.实际上,只有实例变量很重要.[是的,有类变量,但它们是一个相当专业且经常令人困惑的事情,最好避免.]
创建对象(类的实例)时
b= BasicInfoPage(...)
然后b.intelligence
是b
实例的智力值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