##############################################################################
# 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()