Skip to content

Instantly share code, notes, and snippets.

@herberthamaral
Created November 9, 2011 09:30
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save herberthamaral/1350957 to your computer and use it in GitHub Desktop.
Save herberthamaral/1350957 to your computer and use it in GitHub Desktop.
Exemplo de uso de args e kwargs no Python
# -*- 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