Encapsulacion en Python

Seguimos estudiando el lenguaje y ahora introducimos la encapsulacion con el mismo ejemplo de las clases:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/usr/bin/env python
 
# Encapsulacion en python
class Automotor(object) :
    """Clase de la cual heredan las demas y que es del nuevo estilo en python"""
 
    def __init__(self, ensambladora, nombre) :
        self.setEnsambladora(ensambladora)
        self.setNombre(nombre)
        print "Automotor", nombre, "Creado!!!"
 
    def setEnsambladora(self, ensambladora) :
        """Determina la ensambladora"""
        self.__ensambladora = ensambladora
 
    def getEnsambladora(self) :
        """Retorna la ensambladora"""
        return self.__ensambladora
 
    def setNombre(self, nombre) :
        """Determina el nombre del automotor"""
        self.__nombre = nombre
 
    def getNombre(self) :
        """Retorna el nombre del automotor"""
        return self.__nombre
 
    #Determinamos que el unico acceso a las variables es por los metodos
    ensambladora = property(getEnsambladora, setEnsambladora)
    nombre = property(getNombre, setNombre)
 
 
class Carro(Automotor) :
    """Esta clase hereda de Automotor y sus metodos"""
    pass
 
class Motocicleta(Automotor) :
    """Esta clase hereda de Automotor y sus metodos, pero es diferente a Carro"""
    pass
 
if __name__ == '__main__':
    carro = Carro("Toyota", "Celica")
    moto = Motocicleta("Auteco", "Pulsar")
 
    print "\n\n"
    print "El carro es", carro.getNombre()
    print "La moto es", moto.getNombre()

Tags: ,

2 De respuestas a “Encapsulacion en Python”

  1. Eloy-caballo 30 julio, 2009 en 8:51 PM #

    Hola, la verdad es que noveo la necesidad de hacer metodos accesores getter y setter pues si te fijas en python la oop como que dificulta este paso, para que vas a crear metodos accesores get y set si estan practicamente semipublico, en verdad en este punto citare a java, por ejemplo en java tu declaras un dato privado pero luego puedes modificarlo y leerlo cuando te de la gana y desde cualquier package, siempre y cuando los metodos sean publico en verdad no veo la ventaja de los metodos accesores, igual aqui en este ejemplo no los necesitas pues estas accediendo a datos practicamentes publicos, ahora si fuesen datos privados fuera otra cosa, bueno esto es todo hermano, por cierto tu blog está bien cuidadito, te felicito.

  2. Camilo Nova 30 julio, 2009 en 8:53 PM #

    Muchas gracias, esperamos pronto seguir publicando mas cosas, hemos estado un poco alejados del tema.

    Respecto a la comparacion con java es totalmente respetable, voy a escribir sobre otro ejemplo para tratar mejor el tema y poder hacer mas comparaciones.

Deja una respuesta