Accediendo en Python a variables de clase

Hynack

Buenas, tengo una duda que no soy capaz de resolver mediante Google. A ver si algún alma caritativa es capaz de ayudarme:

Esquema del código:

class Game()
....
self.hero = Player(...)
self.opponent = Player(...)
....

------------------------------------------

class Player()
...
self.health = 10
---
def playturn(self):
...
#Aqui viene lo importante. Quiero modificar la variable de clase health del oponente o del hero, pero no se #como acceder a ella.
Game.opponent.health -= 1 ??

------------------------------------------

Game1 = Game(...)
CCiRviNe

No he visto mucho Python, pero no se pueden usar getters/setters? en la clase player hacer algo como:

def set_health(self, health):
    self.health = health

y en Game.opponent

Game.opponent.set_health(5)

Si es restar sería modificar para que haga la resta/suma o lo que sea.

C

Tienes varias cosas mal en ese código así a simple vista:

  • Las definición de clases no se invocan, van sin paréntesis.
  • Te faltan los dos puntos que separan la lógica de las instrucciones.
  • 'self' es una variable de instancia y hay que usarla dentro de los métodos de una clase, no fuera.
  • Estás invocando una instancia de la clase 'Player' sin declarar.

Las variables estáticas se declaran en Python dentro de la clase pero fuera de los métodos y sin el 'self'. Luego se invocan usando el nombre de clase, algo así:

class Player:
        health = 10
        def playturn(self):
                print "ok"

class Game:
        opponent = Player()
        def __init__(self):
                self.var = 1


Game.opponent.health -= 1
print Game.opponent.health

Y tras ejecutarlo resulta en:

9

Usuarios habituales