Lista 10-16: Clase Nombre con propiedades (nombre.py)

##############################################################################
# Parte del libro Introducción a la programación con Python
# Autor: Nilo Ney Coutinho Menezes
# Editora Novatec (c) 2015 - ISBN 978-85-7522-250-8
# Primera edición - Mayo/2016
# Sitio: http://www.librodepython.com
#
# Archivo: lista\capítulo 10\10.16 - Clase Nombre con propiedades (nombre.py).py
# Descripción: Clase Nombre con propiedades (nombre.py)
##############################################################################

from functools import total_ordering


@total_ordering
class Nombre:
    def __init__(self, nombre):
        self.nombre = nombre

    def __str__(self):
        return self.nombre

    def __repr__(self):
        return "<Clase {3} en 0x{0:x} Nombre: {1} Clave: {2}>".format(
            id(self), self.__nombre, self.__clave, type(self).__name__)

    def __eq__(self, otro):
        return self.nombre == otro.nombre

    def __lt__(self, otro):
        return self.nombre < otro.nombre

    @property
    def nombre(self):
        return self.__nombre

    @nombre.setter
    def nombre(self, valor):
        if v alor == None or not valor.strip():
            raise ValueError("Nombre no puede ser nulo nem en blanco")
        self.__nombre = valor
        self.__clave = Nombre.CreaClave(valor)

    @staticmethod
    def CreaClave(nombre):
        return nombre.strip().lower()
Haga clic aquí para bajar el archivo