Bom dia.
Antes de mais nada gostaria de esclarecer que estou iniciando em Python a pouco tempo.Descobri que nessa linguagem não existe sobrecarga de métodos.Pesquisei muito, mas achei apenas metade do que eu queria saber.No exemplo abaixo o parâmetro pode ser int ou string:
class Carro: def met1(self,arg): if isinstance(arg,int): print 'Inteiro' elif isinstance(arg,str): print 'String' else: raise TypeError,'Tipo %s não suportado.' % arg.__class__.__name__
Sendo assim gostaria de saber como eu faria para criar uma classe cujo método construtor poderia receber quantidade de parâmetros diferentes.
algo do tipo:
f1 = Funcionario("Chiquinho") # objeto f1 já é criado com o atributo nome='Chiquinho'f2 = Funcionario() # objeto f2 criado sem definição prévia do atributo nome
Obrigado!
[As partes desta mensagem que não continham texto foram removidas]
Tenho a impressão que é perfeitamente possível fazer o que você quer. Apesar
disso, as chances de você obter uma resposta crescerão muito se você enviar
o link pro código hospedado em algum site que preserve a formatação. Sugiro
este:
http://paste.pocoo.org/
<http://paste.pocoo.org/>Um abraço
Marco André
2010/5/6 Juliano Atanazio <sp_juliano@yahoo.com.br>
> Bom dia.
> Antes de mais nada gostaria de esclarecer que estou iniciando em Python a
> pouco tempo.Descobri que nessa linguagem não existe sobrecarga de
> métodos.Pesquisei muito, mas achei apenas metade do que eu queria saber.No
> exemplo abaixo o parâmetro pode ser int ou string:
> class Carro: def met1(self,arg): if isinstance(arg,int):
> print 'Inteiro' elif isinstance(arg,str):
> print 'String' else: raise
> TypeError,'Tipo %s não suportado.' % arg.__class__.__name__
> Sendo assim gostaria de saber como eu faria para criar uma classe cujo
> método construtor poderia receber quantidade de parâmetros diferentes.
> algo do tipo:
> f1 = Funcionario("Chiquinho") # objeto f1 já é criado com o atributo
> nome='Chiquinho'f2 = Funcionario() # objeto f2 criado sem definição prévia
> do atributo nome
> Obrigado!
>
>
>
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
> ------------------------------------
>
> ,----------------------------------------------------------.
> | Antes de enviar um e-mail para o grupo leia: |
> | http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar |
> | E se você é usuário do BOL lembre-se de cadastrar o |
> | e-mail do grupo na lista branca do seu sistema anti-spam. |
> `----------------------------------------------------------´Links do
> Yahoo! Grupos
>
>
>
--
Marco André
marcoandre@gmail.com
http://www.google.com.br/profiles/marcoandre
[As partes desta mensagem que não continham texto foram removidas]
2010/5/6 Juliano Atanazio <sp_juliano@yahoo.com.br>
> Sendo assim gostaria de saber como eu faria para criar uma classe cujo
> método construtor poderia receber quantidade de parâmetros diferentes.
> algo do tipo:
> f1 = Funcionario("Chiquinho") # objeto f1 já é criado com o atributo
> nome='Chiquinho'f2 = Funcionario() # objeto f2 criado sem definição prévia
> do atributo nome
> Obrigado!
>
Você pode definir um argumento padrão[1]:
>>> def default(name = None):
... print(name if name else "Nenhum nome definido")
...
>>> default()
Nenhum nome definido
>>> default("Renato")
Renato
>>>
[1] http://docs.python.org/tutorial/controlflow.html#default-argument-values
Abs.
--
Renato Besen
http://onca.st/
[As partes desta mensagem que não continham texto foram removidas]
2010/5/6 Juliano Atanazio <sp_juliano@yahoo.com.br>
> Bom dia.
> Antes de mais nada gostaria de esclarecer que estou iniciando em Python a
> pouco tempo.Descobri que nessa linguagem não existe sobrecarga de
> métodos.Pesquisei muito, mas achei apenas metade do que eu queria saber.No
> exemplo abaixo o parâmetro pode ser int ou string:
> class Carro: def met1(self,arg): if isinstance(arg,int):
> print 'Inteiro' elif isinstance(arg,str):
> print 'String' else: raise
> TypeError,'Tipo %s não suportado.' % arg.__class__.__name__
> Sendo assim gostaria de saber como eu faria para criar uma classe cujo
> método construtor poderia receber quantidade de parâmetros diferentes.
> algo do tipo:
> f1 = Funcionario("Chiquinho") # objeto f1 já é criado com o atributo
> nome='Chiquinho'f2 = Funcionario() # objeto f2 criado sem definição prévia
> do atributo nome
> Obrigado!
>
>
Meio off-topic...
Quando for verificar se uma variável é uma string não faça
isinstance(arg, str)
Faça
isinstance(arg, basestring)
Veja:
>>> arg = 'string'
>>> isinstance(arg, str)
True
>>> isinstance(arg, basestring)
True
>>> arg = u'unicode'
>>> isinstance(arg, str)
False
>>> isinstance(arg, basestring)
True
--
Luiz Armesto
http://stoa.usp.br/luizarmesto/
luiz.armesto@gmail.com (email, gtalk, msn)
OpenPGP key: 0734D00A
[As partes desta mensagem que não continham texto foram removidas]
2010/5/6 Juliano Atanazio <sp_juliano@yahoo.com.br>
> Bom dia.
> Antes de mais nada gostaria de esclarecer que estou iniciando em Python a
> pouco tempo.Descobri que nessa linguagem não existe sobrecarga de
> métodos.Pesquisei muito, mas achei apenas metade do que eu queria saber.No
> exemplo abaixo o parâmetro pode ser int ou string:
> class Carro: def met1(self,arg): if isinstance(arg,int):
> print 'Inteiro' elif isinstance(arg,str):
> print 'String' else: raise
> TypeError,'Tipo %s não suportado.' % arg.__class__.__name__
> Sendo assim gostaria de saber como eu faria para criar uma classe cujo
> método construtor poderia receber quantidade de parâmetros diferentes.
> algo do tipo:
> f1 = Funcionario("Chiquinho") # objeto f1 já é criado com o atributo
> nome='Chiquinho'f2 = Funcionario() # objeto f2 criado sem definição prévia
> do atributo nome
> Obrigado!
>
Você pode usar valor padrão no seu parâmetro ou usar args e kwargs.
Procure por "python args kwargs" que vc acha a explicação. :-)
Até mais,
--
Luciano Pacheco
blog.lucmult.com.br
[As partes desta mensagem que não continham texto foram removidas]
Galera alguem sabe de algum livro ou tutorial que me ajude desenvolver aplicativos com interface gráfica com Python?
Estou tentanto usar o Netbeans + GTK mas tenho o seguinte erro
Traceback (most recent call last):
File "H:\Workspace Python\Primeiros\1NB\NB1a\src\NB1a.py", line 8, in <module>
import gtk
ImportError: No module named gtk
Não sei como corrigir isso. Tenho os seguintes aplicativos instalados
pycairo-1.8.6.win32-py2.6.exe
pygobject-2.20.0.win32-py2.6.exe
pygtk-2.16.0.win32-py2.6.exe
pygtk-2.16.0+glade.win32-py2.6.exe
Código:
__author__="Tomassoni"
__date__ ="$02/05/2010 18:31:09$"
# -*- coding: utf-8 -*-
import subprocess
import gtk
import gtk.glade
class Exec(object):
#Janela principal.
def __init__(self):
#Inicializa a classe.
# Carrega a interface
self.tree = gtk.glade.XML('cmd.glade', 'main')
# Liga os eventos
callbacks = {
'on_main_destroy': self.on_main_destroy,
'on_btn_fechar_clicked': self.on_main_destroy,
'on_btn_rodar_clicked': self.on_btn_rodar_clicked
}
self.tree.signal_autoconnect(callbacks)
def on_btn_rodar_clicked(self, widget):
#Roda o comando.
ntr_cmd = self.tree.get_widget('ntr_cmd')
chk_shell = self.tree.get_widget('chk_shell')
cmd = ntr_cmd.get_text()
if cmd:
# chk_shell.state será 1 se chk_shell estiver marcado
if chk_shell.state:
cmd = 'cmd start cmd /c ' + cmd
subprocess.Popen(args=cmd)
else:
# Caixa de dialogo
dialog = gtk.MessageDialog(parent=self.tree.get_widget('main'),
flags=gtk.DIALOG_MODAL |
gtk.DIALOG_DESTROY_WITH_PARENT,
type=gtk.MESSAGE_OTHER, buttons=gtk.BUTTONS_OK,
message_format='Digite um comando.')
dialog.set_title('Mensagem')
dialog.set_position(gtk.WIN_POS_CENTER_ALWAYS)
# Exibe a caixa
dialog.run()
dialog.destroy()
return True
def on_main_destroy(self, widget):
#Termina o programa.
raise SystemExit
if __name__ == "__main__":
# Inicia a GUI
exe = Exec()
gtk.main()
Exemplo de um livro. mas so da pani.
Alguem pode me ajudar a iniciar?
[As partes desta mensagem que não continham texto foram removidas]
Em 06-05-2010 20:43, Rogério Tomassoni escreveu:
> Galera alguem sabe de algum livro ou tutorial que me ajude desenvolver aplicativos com interface gráfica com Python?
> Estou tentanto usar o Netbeans + GTK mas tenho o seguinte erro
> Traceback (most recent call last):
> File "H:\Workspace Python\Primeiros\1NB\NB1a\src\NB1a.py", line 8, in<module>
> import gtk
> ImportError: No module named gtk
> Não sei como corrigir isso. Tenho os seguintes aplicativos instalados
> pycairo-1.8.6.win32-py2.6.exe
> pygobject-2.20.0.win32-py2.6.exe
> pygtk-2.16.0.win32-py2.6.exe
> pygtk-2.16.0+glade.win32-py2.6.exe
>
Olá!
Falta a biblioteca (dll) do GTK+ feita em C. Esses módulos
"apenas" fazem as chamadas para as funções presentes na biblioteca em C
do GTK+. Instale o pacote com a última versão do Glade e GTK juntos de
[1], que podem sempre ser encontrados a partir de [2].
[1]
http://ftp.gnome.org/pub/GNOME/binaries/win32/glade3/3.6/glade3-3.6.7-with-GTK+.exe
[2] http://glade.gnome.org/
[]'s
Junior Polegato
2010/5/6 Luciano Pacheco <lucmult@gmail.com>
> 2010/5/6 Juliano Atanazio <sp_juliano@yahoo.com.br<sp_juliano%40yahoo.com.br>
> >
>
> > Bom dia.
> > Antes de mais nada gostaria de esclarecer que estou iniciando em Python a
> > pouco tempo.Descobri que nessa linguagem não existe sobrecarga de
> > métodos.Pesquisei muito, mas achei apenas metade do que eu queria saber.
>
>
[cut]
>
> Você pode usar valor padrão no seu parâmetro ou usar args e kwargs.
>
> Procure por "python args kwargs" que vc acha a explicação. :-)
>
>
E nesse caso, o tutorial oficial é a primeira parada (não só pra esse tema,
mas pra muitos outros)
http://docs.python.org/tutorial/controlflow.html#more-on-defining-functions
--
Henrique F. Baggio
Computer Engineering - Unicamp
Microsoft Innovation Center - Unicamp
Software Engineer
http://www.lms.ic.unicamp.br
http://lmsu.codeplex.com
[As partes desta mensagem que não continham texto foram removidas]
2010/5/7 Henrique Baggio <hnrqbaggio@gmail.com>:
> 2010/5/6 Luciano Pacheco <lucmult@gmail.com>
>
>> 2010/5/6 Juliano Atanazio <sp_juliano@yahoo.com.br<sp_juliano%40yahoo.com.br>
>> >
>>
>> > Bom dia.
>> > Antes de mais nada gostaria de esclarecer que estou iniciando em Python a
>> > pouco tempo.Descobri que nessa linguagem não existe sobrecarga de
>> > métodos.Pesquisei muito, mas achei apenas metade do que eu queria saber.
>>
>
>>
> [cut]
>>
>
>> Você pode usar valor padrão no seu parâmetro ou usar args e kwargs.
>>
>> Procure por "python args kwargs" que vc acha a explicação. :-)
>>
>>
> E nesse caso, o tutorial oficial é a primeira parada (não só pra esse tema,
> mas pra muitos outros)
>
> http://docs.python.org/tutorial/controlflow.html#more-on-defining-functions
Mandou muito bem, Henrique.
Aos novatos, a dica mais útil de todas: invista o tempo e leia o
tutorial oficial de Python, disponível inclusive em portuguẽs:
http://www.python.org.br/wiki/TutorialPython
A versão em português refere-se ao Python 2.4 mas tudo o que tem lá
funciona no Python 2.6, e o que tem de novo no Python 2.6 não passa de
5% do total que é igual nas duas versões.
[ ]s
Luciano