Created
November 9, 2011 09:30
-
-
Save herberthamaral/1350957 to your computer and use it in GitHub Desktop.
Exemplo de uso de args e kwargs no Python
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: utf8 -*- | |
#exemplo de uso de args e kwargs | |
class Solido(object): | |
""" | |
Isso é um comentário multilinha no Python. | |
O método __init__ é o construtor da classe, ou seja | |
é o método que será executado quando a classe for instanciada. | |
Notem que eu tou usando o argumento 'volume' para esse método. | |
Você pode utilizar esta classe desta forma: | |
>>> solido = Solido(123) | |
>>> solido.volume | |
123 | |
Ou dessa forma: | |
>>> solido = Solido(volume = 123) | |
>>> solido.volume | |
123 | |
Ou ainda dessa forma: | |
>>> solido = Solido() | |
>>> solido.volume | |
0 | |
Nesse último caso, eu estou me valendo do valor padrao de volume para | |
deixar o argumento volume como opcional. | |
""" | |
def __init__(self, volume = 0): | |
self.volume = volume | |
class Esfera(Solido): | |
def __init__(self, cor, *args, **kwargs): | |
super(Esfera, self).__init__(*args, **kwargs) | |
""" | |
O super é realmente estranho pra quem o vê da primeira vez, mas | |
ele é 'super' tranquilo de entender ;) | |
Quando você herda de uma classe e sobrescreve um determinado método | |
(nesse caso o nosso construtor), é interessante que você mantenha | |
o comportamento original da classe pai (Solido) e é o que eu faço | |
aqui: super(Esfera, self) acessa a classe pai de Esfera (Solido) e | |
super(Esfera, self).__init__(*args, **kwargs) chama o método | |
construtor da classe pai e dessa forma mantém o comportamento | |
do pai. | |
""" | |
self.cor = cor | |
esfera = Esfera(cor = 'branca', volume = 10) | |
print esfera.cor | |
print esfera.volume |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment