Foros del Web » Programando para Internet » Python »

como hacer referencia a unmiembro de una clase desde otra clase en otro archivo

Estas en el tema de como hacer referencia a unmiembro de una clase desde otra clase en otro archivo en el foro de Python en Foros del Web. sigo sin entender como acceder a una clase desde otro archivo por ejemplo tengo una variable en una clase(A)y quiero acceder a esta desde otra ...
  #1 (permalink)  
Antiguo 12/01/2011, 12:20
 
Fecha de Ingreso: mayo-2008
Mensajes: 499
Antigüedad: 15 años, 11 meses
Puntos: 1
como hacer referencia a unmiembro de una clase desde otra clase en otro archivo

sigo sin entender como acceder a una clase desde otro archivo por ejemplo
tengo una variable en una clase(A)y quiero acceder a esta desde otra clase(B) que esta en otro archivo lo mas segura seria

cls = A
cls.var

pero en la clase (A) tengo importada la clase (B)

import B

class A:
etc....

y no puedo importarla a la B porque ya esta en la A y si lo hago me saldra error nose puede llamar 2 veces

quiero acceder para añadirle como lo hago?
como puedo hacerlo con los argumentos en def ejem

class A:
def__init__(self, parent, id):
etc......


class B:
def __init__(self,parent,a):

self.ca = a



ahy me quedo truncado como hacer que self.ca o 'a' como argumento sea la clase A

para acceder desde self.ca?

alguien me puede ayudar
  #2 (permalink)  
Antiguo 13/01/2011, 05:52
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: como hacer referencia a unmiembro de una clase desde otra clase en otro ar

No entiendo bien el ejemplo ni el motivo por el que querés hacer eso, explícate mejor.

En principio no es necesario que importes A en B, esto debería valer:

Código Python:
Ver original
  1. import B
  2. class A:
  3.     def __init__(self, ...):
  4.         ....
  5.         self.atributo = B(self)

y en el otro archivo

Código Python:
Ver original
  1. class B:
  2.     def __init__(self, objeto_a, ...):
  3.         variable = objeto_a.__class__.atributo_de_clase

Nota: no he probado lo anterior, porque ahora mismo no tengo un intérprete de Python a mano.
  #3 (permalink)  
Antiguo 13/01/2011, 14:07
 
Fecha de Ingreso: mayo-2008
Mensajes: 499
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: como hacer referencia a unmiembro de una clase desde otra clase en otro ar

creeo que ya lo entendi un poco lo que se hace es accesar o validar el identificador como self justo asi

Código python:
Ver original
  1. class B:
  2.        def __init__(self, parent a):
  3.             self._a = a
  4.             self._a.GetMethod()

Código Python:
Ver original
  1. import B
  2.  
  3. class A:
  4.       def __init__(self, parent, id):
  5.           self.b = B(self, self)#como el segundo 'self'
  6.  
  7.       def GetMethod(self):
  8.             pass

algo asi pero expandirlo de una tercera clase como lo hago?
por ejemplo la clase C pasa por la clase B como lo haria para obtener o leer el metodo de la clase Aen la clase C?

ejemplo
Código Python:
Ver original
  1. class C:
  2.       def __init__(self, parent, a):
  3.             self._a = a
  4.             self._a.GetMethod()

Código Python:
Ver original
  1. import C
  2.  
  3. class B:
  4.      def __init__(self, parent, a):
  5.           self._a = a
  6.           self.c = C(self, self._a)

esto no pasa?

Última edición por AlvaroG; 13/01/2011 a las 14:44 Razón: resaltado de código
  #4 (permalink)  
Antiguo 13/01/2011, 14:58
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: como hacer referencia a unmiembro de una clase desde otra clase en otro ar

No termino de entender qué es lo que necesitás hacer. ¿Qué tal si ponés un ejemplo concreto?

Lo que quería decir con el ejemplo anterior es que una vez que tenés un objeto de cierto tipo, no necesitás importar el módulo o la clase a la que ese objeto pertenece para usar sus atributos o métodos. Un ejemplo más sencillo:

a.py
Código Python:
Ver original
  1. class A:
  2.     def __init__(self, a):
  3.         print a.urlopen('http://google.com')
b.py
Código Python:
Ver original
  1. import urllib2
  2. from a import A
  3. A(urllib2)
  #5 (permalink)  
Antiguo 13/01/2011, 22:41
 
Fecha de Ingreso: mayo-2008
Mensajes: 499
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: como hacer referencia a unmiembro de una clase desde otra clase en otro ar

es lo mismo que pongo aqui estoy usando wxpython tengo un frame en el evento de un menu abro una caja de dialogo que esta en otro archivo en este tengo un notebook para crear varias paginas tengo importado un panel que tiene controles que es otro archivo ahi tengo que hacer que los controles cambien el color tamaño del frame asi como lo he escrito

estoy queriendo acceder al metodo GetDockArt por ejemplo que esta definido en la clase frame del archivo principal para cambiar el color este regresa un self.getartmanager que es al que quiero cambiar valores del panel que tiene los controles me explico?

mas parecido a esto http://i254.photobucket.com/albums/h...g?t=1294980055
  #6 (permalink)  
Antiguo 14/01/2011, 05:18
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: como hacer referencia a unmiembro de una clase desde otra clase en otro ar

Bien, el problema que veo es que estás mezclando capas. Si pensamos en el modelo MVC, estás mezclando el "Controlador" con la "Vista", al querer llamar a un método de una ventana en la clase de otra.

Deberías tener cada ventana completamente separada, y hacerlas interactuar desde un módulo "central" de la aplicación.

Fijate en este tutorial de PyQt, que da un ejemplo de cómo separar las ventanas del resto de la aplicación. Ojo, no tengo experiencia con wxwidgets así que quizás no sea aplicable:
http://www.rkblog.rk.edu.pl/w/p/introduction-pyqt4/

De todas formas, lo que necesitás acceder no es el módulo panel entero, sino a una variable cualquiera de ese módulo. Teniendo la variable del objeto de clase panel, llamar a sus métodos es posible sin importar el módulo panel.


Saludos.

Etiquetas: clase, referencia
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:21.