[Python-es] duda de principiante con variables

Pablo Rodríguez oinos en web.de
Lun Jul 28 17:01:24 CEST 2008


Ark wrote:
> Bueno, trataré de dar un ejemplo de acuerdo a la forma en que entiendo el
> problema.

Gracias por la ayuda, Ark.

> Tienes dos clases, en uno de los métodos de una clase se ejecuta esta linea
> self.recording_time = self.player.get_last_stream_time().  La otra clase
> necesita acceder a ese valor guardado en la primera. algo así.
> Este es como un ejemplo pequeño de lo que entiendo.
> class A:
>     def __init__(self):
>         self.valor = 3
> 
> class B:
>     def imprimir_valor(self, objeto_A):
>         """Debe imprimir el 3 definido arriba"""
>         print objeto_A.valor
> 
> class C:
>     def __init__(self, otro_objeto):
>         self.otro = otro_objeto #Esto es una asociacion entre clase C y A
>     def imprimir_valor(self):
>         print self.otro.valor
> 
> objeto1 = A()
> #En objeto1 ya esta el 3
> objeto2 = B()
> objeto2.imprimir_valor(objeto1) #le envio la referencia para que saque el
> dato
> 
> objeto3 = C(objeto1)
> objeto3.imprimir_valor()
> 
> Para sacar el atributo (la terminología no importa tanto, jaja, si es
> basicamente una variable) de un objeto, necesitamos la referencia a el otro
> objeto, por eso aquí mostré dos formas que yo utilizaría para obtenerla.

Por lo que he probado, no necesito que haya tres clases (perdona, pero 
cuanto más sencillo, más facil es que lo entienda):

class A:
     def __init__(self):
         self.valor = "hola"

class B:
     def imprimir_valor(self, objeto_A):
         """Debe imprimir el valor definido arriba"""
         print objeto_A.valor

B().imprimir_valor(A()) #le envio la referencia para que saque el dato

Así, si que lo entiendo. (Con más clases o más atributos o variables, lo 
siento, pero me pierdo.

> También sería bueno hacer un método en la clase A para acceder al atributo,
> algo así como def get_value(self), eso es para el encapsulamiento.

Eso ya es para nota, me temo. De momento lo soluciono y luego ya buscaré 
cómo hacer el encapsulamiento

> Espero que sirva.

Pues me ha servido. Gracias de nuevo,


Pablo


Más información sobre la lista de distribución Python-es