class Personagem:
""" Classe que cria personagens do jogo """
def __init__(self,Nome,Poder):
""" Método construtor da classe, onde recebe os parametros Nome e Poder de cada bonequinho """
self.Nome = Nome
self.Poder = Poder
print 'Criando personagem ',Nome,' com poder ',Poder
def Correr(self):
print self.Nome,' está correndo!'
def Chute(self,Adversario):
print self.Nome,' Deu um chute em ',Adversario
Vamos agora explicar: Uma classe chamada Personagem foi criada, e para que ela fabrique algum bonequinho, precisa satisfazer os parametros do método construtor (__init__). A fabricação dele é o que chamamos de objeto ou instância de classe, e agora iremos criar um:
>>> Smurf = Personagem('Papai Smurf',30)
>>> Criando personagem Papai Smurf com poder 30
Viu? Agora temos um objeto chamado Smurf, ou seja, demos vida ao Papai Smurf e ele está pronto pra correr!
>>> Smurf.Correr()
>>> Papai Smurf está correndo!
Agora, para o chute, você deve ter visto que na definição do metodo tem um parametro Adversario, notou? Então teremos que dizer quem vamos chutar!
>>> Smurf.Chute('Gargamel')
>>> Papai Smurf Deu um chute em Gargamel
Deu pra entender como funciona? Da mesma forma que criamos o objeto Smurf, poderemos criar mais inumeros personagens usando apenas essa classe Personagem, usando esses mesmos comandos que digitei acima.
Ainda tem dúvidas não é? O que aquele self representa? O que são aquelas três aspas no inicio dos métodos e da classe? Toda classe precisa de parametros iniciais?
Vamos lá:
O self representa uma váriavel de objeto. Sem o self, quando fossem criados dois ou mais objetos as variaveis iriam sempre ser alteradas e citando como exemplo o código acima, se o ultimo bonequinho chamado 'Tux' fosse criado, todos os outros bonequinhos iam passar a chamar-se Tux também, assim como iam passar a ter o mesmo poder do Tux. Com o self, cada váriavel corresponde ao seu objeto!
As três aspas são chamadas de Doc String. Quando um programa é muito extenso, essas doc strings são de extrema necessidade para que o programador se oriente, elas documentam o código. Olha só como funciona usando o mesmo código acima:
>>> Personagem.__doc__
>>> ' Classe que cria personagens do jogo '
Sacou?
Quanto a ultima pergunta, Não. Não é preciso que toda classe receba dados iniciais, eles podem ser manipulados após a criação dos objetos apenas adicionando metodos de set. Eu poderia criar mais um método ali chamado 'RecebeNome' onde só após a criação do objeto eu iria dar nome a ele.
Bem, pretendo continuar a fazer mini-tutoriais como esse a medida que eu for tomando maior conhecimento da linguagem python. Dessa vez foi apenas um esquente, e espero que tenha ajudado alguem.