如何将变量从一个类传递到另一个类?

时间:2016-09-25 23:11:08

标签: python pygame

我正在尝试创建一个基本游戏,但我对python编程场景还不熟悉。我遇到过两个类(一个玩家和一个敌人类)的问题,我想从玩家和敌人那里获取健康等类变量,反之亦然。有什么方法可以做到这一点?

以下是更好地强调我所要求的代码:

    class Player(object):
        def __init__(self, image):
            self.x = 100
            self.y = 240
            self.health = 30
            self.defense = 25
            self.image = image
            self.black = (0, 0, 0)
            self.draw()

        def draw(self):
            screen.blit(self.image, (self.x, self.y))
            line = pygame.draw.rect(screen, self.black, (80, 300, 100, 5))

        def attack(self):
            pass

    class Enemy(object):
        def __init__(self, image):
            self.x = 480
            self.y = 240
            self.health = 20
            self.defense = 15
            self.image = image
            self.black = (0, 0, 0)
            self.draw()

        def draw(self):
            screen.blit(self.image, (self.x, self.y))
            line = pygame.draw.rect(screen, self.black, (460, 300, 100, 5))

        def attack(self):
            pass

基本上,我不明白如何从一个类中获取类似“self.health”的内容,并轻松地从其他类中访问它。我已经尝试了一些使用返回方法等的方法,但我很好奇是否有任何简单的方法可以做到这一点。感谢帮助!

1 个答案:

答案 0 :(得分:0)

此代码创建一个类,在特殊的__init__方法中,它为各种成员变量分配值。

class Player(object):
    def __init__(self, image):
        self.x = 100
        self.y = 240
        self.health = 30
        self.defense = 25
        self.image = image
        self.black = (0, 0, 0)
        self.draw()

这些成员变量在Python中也称为 properties 。如果你有一个Player实例的引用(Player类的一个实例):

p = Player()

您可以随意访问这些属性:

print(p.health)

也许您需要某种“主循环”或控制器类,可以访问玩家和敌人,并可以相应地设置其属性:

class MainLoop(object):

   def __init__(self):
     self.player_1 = Player()
     self.enemy_1 = Enemy()

   def run(self):
     if fight():   # fight() is some function of your game
       self.player_1.health -= 10
       self.enemy_1.health -= 20