Classes e Objetos


In [ ]:
class Pessoa(object):
    def __init__(self, nome, idade):
        self.nome = nome
        self.idade = idade

In [ ]:
joao = Pessoa()

In [ ]:
joao = Pessoa('João', 20)
print(joao, '\n')
print(joao.nome)
print(joao.idade)

In [ ]:
joao.nome = 'João Pedro'
print(joao.nome)

In [ ]:
maria = Pessoa('Maria', 20)
print(maria)
print(maria.nome)
print(maria.idade)

Encapsulamento


In [ ]:
class Pessoa(object):
    def __init__(self, nome, idade):
        self.nome = nome
        self.__idade = idade

In [ ]:
pedro = Pessoa('Pedro', 30)
print(pedro.nome)

In [ ]:
print(pedro.__idade)

Desta forma não conseguimos recuperar e nem alterar o valor dessa variável privada. Para isso precisamos construir dois métodos, um para definir (setter) o valor e outro para recuperar (getter) o valor.


In [ ]:
class Pessoa(object):
    def __init__(self, nome, idade):
        self.nome = nome
        self.__idade = idade
        
    @property
    def idade(self):
        return self.__idade
    
    @idade.setter
    def idade(self, nova_idade):
        self.__idade = nova_idade

In [ ]:
pedro = Pessoa('Pedro', 30)

In [ ]:
print(pedro.nome)
pedro.idade = 50

In [ ]:
print(pedro.idade)

Herança


In [ ]:
class Pessoa(object):
    def __init__(self, nome, idade):
        self.nome = nome
        self.__idade = idade
        
    @property
    def idade(self):
        return self.__idade
    
    @idade.setter
    def idade(self, nova_idade):
        self.__idade = nova_idade

In [ ]:
class Atleta(Pessoa):
    def __init__(self, nome, idade, peso):
        Pessoa.__init__(self, nome, idade)
        self.peso = peso
        self.aposentado = False
        
    def aquecer(self):
        print("Atleta Aquecido")
    
    def aposentar(self):
        self.aposentado = True

In [ ]:
jose = Atleta('Jose', 30, 80)
print(jose.aposentado)

In [ ]:
jose.aposentar()
print(jose.aposentado)

In [ ]:
jose.aquecer()

In [ ]:
jose.nome = 'Zé'
print(jose.nome, jose.idade, jose.peso)

In [ ]:
class Corredor(Atleta):
    def correr(self):
        print("Corredor correndo")

class Nadador(Atleta):
    def nadar(self):
        print("Nadador nadando")

class Ciclista(Atleta):
    def pedalar(self):
        print("Ciclista pedalando")

In [ ]:
pedro = Ciclista('Pedro', 30, 100)
print(dir(pedro))

In [ ]:
class Triatleta(Corredor, Nadador, Ciclista):
    def triatlo(self):
        print("Iniciar prova")

Exercício de 5 minutos

a) Crie uma instancia da classe Pessoa com o nome de joao.
b) Crie uma instancia da classe Atleta com o nome de anderson.
c) Crie uma instancia da classe Corredor com o nome de vanderlei.
d) Crie uma instancia da classe Triatleta com o nome de silvia.
e) Análise o comportamento da criação e teste os métodos existentes em cada uma das instâncias criadas.

In [ ]: