Skip to content

Instantly share code, notes, and snippets.

@douglascamata
Forked from rochacbruno/1humano.py
Created May 30, 2011 04:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save douglascamata/998435 to your computer and use it in GitHub Desktop.
Save douglascamata/998435 to your computer and use it in GitHub Desktop.
Seres humanos comuns e a reprodução desenfreada orientada a objetos
#encoding: utf-8
class Humano(object):
"""Human Being"""
def __init__(self, nome, pai=None, mae=None):
print "alguem fez besteira e colocou mais um ser Humano no mundo \n"
self.nome = nome
self.pai = pai
self.mae = mae
self.filhos = 0
self.morte = " "
self.civil = "Solteiro"
self.nascer()
def perfil(self):
return """
Nome = %(nome)s
Nascimento = %(nascimento)s
Vivo = %(vivo)s
Filhos = %(filhos)s
Civil = %(civil)s
Morte = %(morte)s
""" % self.__dict__
def nascer(self):
from datetime import datetime
self.nascimento = datetime.now().strftime('%d/%m/%Y %H:%M:%S')
self.vivo = True
print "%s: Estou nascendo \o/ \n" % self.nome
print self.perfil()
def casar(self):
self.civil = "Casado"
print "%s: Que felicidade estou casando!!! :)) \n" % self.nome
def morrer(self):
from datetime import datetime
self.vivo = False
self.morte = datetime.now().strftime('%d/%m/%Y %H:%M:%S')
print "%s: E o meu fim \n" % self.nome
@property
def solteiro(self):
return self.civil == "Solteiro"
solteira=solteiro
@property
def esta_vivo(self):
return self.vivo
esta_viva=esta_vivo
@property
def casado(self):
return self.civil == "Casado"
casada=casado
def __add__(self, other):
print "%s e %s: Vamos ter um bebe \n" % (self.nome, other.nome)
homem, mulher = (self, other) if isinstance(self, Homem) else (other, self)
if homem.esta_vivo:
homem.morrer()
if mulher.solteira:
mulher.casar()
self.filhos += 1
other.filhos += 1
self.filho = Filho(self.nome[:3]+other.nome[2:],
other.nome,
self.nome
)
print self.perfil(),"\n",other.perfil()
return self.filho
class Filho(Humano):
pass
class Mulher(Humano):
pass
class Homem(Humano):
pass
if __name__ == '__main__':
pai = Homem("Joao")
mae = Mulher("Maria")
filho = pai + mae
filha = mae + pai
from humano import Homem, Mulher
pai = Homem("Joao")
mae = Mulher("Maria")
filho = pai + mae
filha = mae + pai
alguem fez besteira e colocou mais um ser Humano no mundo
Joao: Estou nascendo \o/
        Nome = Joao
        Nascimento = 30/05/2011 01:52:28
        Vivo = True
        Filhos = 0
        Civil = Solteiro
        Morte =  
        
alguem fez besteira e colocou mais um ser Humano no mundo
Maria: Estou nascendo \o/
        Nome = Maria
        Nascimento = 30/05/2011 01:52:28
        Vivo = True
        Filhos = 0
        Civil = Solteiro
        Morte =  
        
Joao e Maria: Vamos ter um bebe
Joao: E o meu fim
Maria: Que felicidade estou casando!!! :))
alguem fez besteira e colocou mais um ser Humano no mundo
Joaria: Estou nascendo \o/
        Nome = Joaria
        Nascimento = 30/05/2011 01:52:28
        Vivo = True
        Filhos = 0
        Civil = Solteiro
        Morte =  
        
        Nome = Joao
        Nascimento = 30/05/2011 01:52:28
        Vivo = False
        Filhos = 1
        Civil = Solteiro
        Morte = 30/05/2011 01:52:28
         
        Nome = Maria
        Nascimento = 30/05/2011 01:52:28
        Vivo = True
        Filhos = 1
        Civil = Casado
        Morte =  
        
Maria e Joao: Vamos ter um bebe
alguem fez besteira e colocou mais um ser Humano no mundo
Marao: Estou nascendo \o/
        Nome = Marao
        Nascimento = 30/05/2011 01:52:28
        Vivo = True
        Filhos = 0
        Civil = Solteiro
        Morte =  
        
        Nome = Maria
        Nascimento = 30/05/2011 01:52:28
        Vivo = True
        Filhos = 2
        Civil = Casado
        Morte =  
         
        Nome = Joao
        Nascimento = 30/05/2011 01:52:28
        Vivo = False
        Filhos = 2
        Civil = Solteiro
        Morte = 30/05/2011 01:52:28
        
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment