¡Hola!
Primero que nada quiero felicitarlos y agradecerles por PilasEngine, la verdad que me está gustando mucho y lo veo muy interesante para seguir aprendiendo y ver qué cosas se pueden hacer.
Necesitaba consultar por algo que me dejó pensando: cómo pasar objetos como argumentos a un Actor.
El tema viene así:
A fines de dejar en claro el inconveniente voy a dejar el siguiente código
# coding: utf-8
import pilasengine
pilas = pilasengine.iniciar()
class Objeto(object):
def __init__(self, valor):
self.valor = valor
class UnActor(pilasengine.actores.Actor):
def iniciar(self, parametroComun, parametroObjeto):
self.parametroComun = parametroComun
self.parametroObjeto = parametroObjeto
def actualizar(self):
pass
obj = Objeto(10)
a = UnActor(pilas, 5, 10)
pilas.ejecutar()
El código es muy sencillo. Hay definidos dos clases, una es un actor personalizado (hereda de Actor) y el otro es un objeto sin ningún uso especial (a fines prácticos) que tiene un solo campo. Si creo el Actor
con los parámetros 5 y 10 no hay inconvenientes, los asigna a sus atributos. Pero si quiero usar el objeto recién definido obj
de la siguiente forma
a = UnActor(pilas, 5, obj)
Da un error.
× # Exception: El parametro y tiene un valor no permitido:
Si quiero pasarle el valor
del objeto, no me da problema
a = UnActor(pilas, 5, obj.valor)
Por lo cual no parece ser un problema de los objetos, si no que parece que tiene que ver con la forma en que trata a los objetos en sí el método iniciar()
.
No entiendo cuál sería la forma correcta de pasarle un objeto como argumento a una clase. Por lo que estuve viendo parece que la forma correcta sería definiendo __init__()
en la clase personalizada, pero no encontré ni en la API ni en el Manual cómo sería una forma correcta de utilizar dicha forma.
¿Alguien podría darme una mano con ésto y explicarme por qué no se puede pasar objetos directamente a un Actor
?
¡Muchísimas gracias, saludos!