Sugestão para o item 6.8 checando tipos

1 view
Skip to first unread message

sergio

unread,
Apr 16, 2009, 9:31:06 AM4/16/09
to Aprenda Computação com Python
Ao ler o original em inglês (estou estudando inglês agora) descobri
uma diferença

No original ele testa se uma variável é de um tipo usando a função
built-in "isinstance"
que a meu ver é mais legal do que...

if type(var) == type(3):
print "sim"

if isinstance(a,int):
print "sim, a varivél é do tipo inteiro"

Creio que deveria ser mostrado como no original e deixar a outra forma
como nota do tradutor, mas fico entre a forma didática e a lição do
"import this" que diz que deve haver somente uma forma de fazer cada
coisa.

Luciano Ramalho

unread,
Apr 16, 2009, 9:46:16 AM4/16/09
to aprend...@googlegroups.com
2009/4/16 sergio <voy...@gmail.com>:

Sergio, muito grato por ter encontrado este problema. Exatamente qual
versão do original você esta lendo, pode mandar a URL? Porque esta
divergência não deveria ter acontecido.

Na tradução nós não devemos mudar o código do original, a menos que o
original esteja errado. E neste caso o original está certo. Embora as
duas maneiras funcionem, a checagem via isinstance() é sempre
preferível em lugar da comparação direta de type, porque ela permite
que o sistema seja extendido com classes derivadas, e a checagem
continua valendo. Veja só:

>>> class Cao(object):
... 'um cao'
...
>>> class Dalmata(Cao):
... 'um cao branco com pintas pretas'
...
>>> rex = Cao()
>>> pongo = Dalmata()
>>> type(pongo) == type(rex)
False
>>> isinstance(pongo, Cao)
True
>>>


Talvez a tradução tenha sido feita a partir de uma versão anterior do
original. Por favor mande a URL do texto que você está lendo em inglês
para a gente investigar, OK?

[ ]s
Luciano

Reply all
Reply to author
Forward
0 new messages