Una pregunta Sobre OOP

Jesus Rodriguez foxandxss en gmail.com
Mie Ago 30 17:14:33 CEST 2006


Buenas, tengo una duda bastante extraña

Imaginad que tengo 2 clases, A y B. La clase A instancia a la clase B, luego
el metodo "imprValor" llama a un metodo de B que devuelve un valor

class A:
    def __init__(self):
        self.insB = B()


    def imprValor(self):
        print self.insB.getValor()


class B:
    def getValor(self):
        return 10


insA = A()
InsA.imprValor()


Como es de esperar, este código imprime el valor 10 por pantalla.
Mi conocimiento de OOP no es todo lo bueno que debería ser, pero segun creo,
toda variable de instancia debería ser accesible en cualquier metodo de la
clase,no?. Como en este caso, puedo acceder a la instancia (insB) en la
funcion "imprValor".

El problema está en que estoy leyendo un ejemplo de código de PyGTK, este
hombre usa dos clases, y en una de las funciones de una clase, en su metodo
__init__ creó una instancia de la otra clase, luego un metodo (de la misma
clase) llamo a otro (tambien de la misma clase), supustamente este ultimo
método deberia tener acceso a esa instancia, pero no sé por que paso esa
variable como argumento en la llamada (si, lo se, suena lioso), os pongo un
mini ejemplo:


class A:
    def __init__(self):
        self.insB = B()


    def imprValor(self, insB):
        print insB.getValor()

    def blah(self):
        self.imprValor(self.insB)

class B:
    def getValor(self):
        return 10


insA = A()
insA.blah()


No sería esto una tonteria? (el hecho de que la funcion imprValor NO este
usando directamente self.insB)

O sea, ¿Para qué puede servir llamar a una funcion enviandole una variable a
la que supuestamente ya tiene accceso aun no teniendola de parametro?

Aish, no se si me habeis entendido eejje. La verdad es que esto me lia por
que estoy muy liado en eso de llamadas por valor y por referencia con
lenguajes como C o C#.

Bueno gracias.




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