Apostila do Minicurso de Python - UFU

Classes

Agora os conceitos de Orientação a Objeto serão realmente aplicados. Vamos começar definindo o nosso molde de um carro, e, por isso, vamos chamá-lo de classe. Portanto, uma classe nada mais é que o molde de um objeto.

>>> class Carro:
>>>     def __init__(self):
>>>         self.cor = "Preto"
>>>         self.quatidade_de_lugares = 7
>>>         self.velocidade_maxima = 200
>>>         self.ligado = False
>>>         self.marcha = 1
>>>         self.velocidade = 0

A instrução class cria uma nova classe e é seguida pelo nome que queremos dar a ela. A primeira coisa que fazemos é criar um novo método (uma função específica da classe) e esse método é o __init__. Esse é um método especial chamado de construtor e é executado sempre que um novo objeto da classe é criado, para construir esse objeto. Ele recebe self (si mesmo) como parâmetro, isto é, faz uma referência ao objeto em si.

>>> carro = Carro()

O que acabamos de fazer foi criar um novo objeto e dizer que esse objeto será igual a um Carro, isto é, terá as mesmas características e ações que nossa classe Carro tem.

Podemos modificar os atributos do nosso novo carro:

>>> carro.cor = "Vermelho"
>>> carro.velocidade_maxima = 250

Agora, nosso objeto tem diferentes atributos, mas a classe continua sendo um molde com os valores que passamos quando a definimos. Note que acessamos os atributos por objeto.atributo e essa é a forma padrão de acessá-los. Caso queira verificar o status de um atributo, dê um print do atributo desejado. Por exemplo:

>>> print(carro.cor)

Vamos adicionar algumas funcionalidades para o nosso carro:

>>> class Carro:
>>>     def __init__(self):
>>>         self.cor = "Preto"
>>>         self.quatidade_de_lugares = 7
>>>         self.velocidade_maxima = 200
>>>         self.ligado = False
>>>         self.marcha = 1
>>>         self.velocidade = 0
>>>
>>>     def Ligar(self):
>>>         self.ligado = True
>>>
>>>     def Acelerar(self):
>>>         self.velocidade += 10
>>>
>>>     def Freiar(self):
>>>         self.velocidade -= 10
>>>
>>>     def Trocar_Marcha(self, nova_marcha):
>>>         self.marcha = nova_marcha
>>>
>>>     def Desligar(self):
>>>         self.ligado = False

Agora nosso carro tem várias funcionalidades. Note que todos os métodos devem receber self para indicar que estamos trabalhando com o objeto em si.

Chamamos o método da mesma forma como verificamos os atributos: indicando o objeto e o método que estamos chamando. Confira abaixo e verifique o status dos atributos a medida que executa os métodos. Vamos dirigir um pouco:

>>> carro.Ligar()
>>> carro.Acelerar()
>>> carro.Trocar_Marcha(2)
>>> carro.Freiar()
>>> carro.Desligar()

Veja esse código em: https://gist.github.com/JuliaRizza/afaf3d66c194300818d6