29 de janeiro de 2009

Personal Python 3

E se Python 3 fosse meu:
  • Não haveria 'self' obrigatório como primeiro argumento na definição de um método:
    def method(arg1, arg2):
    self.attr = True
  • 'self' seria um keyword e apareceria magicamente no escopo do método.
    -- Como seria implementado isso?? Não faço a mínima idéia (portanto não poderia fornecer essa resposta ao Guido. Pelo que se dá pra inferir, se houvesse uma maneira simples de fazê-lo, Rossum já o teria feito).
  • str( ), len( ), int( ), float( ), max( ) e min( ) seriam métodos (favor não me argumentar que str( ) invoca o método __str__( ), dentre outros semelhantes, porque estou levando isso em consideração).
  • join( ) seria um método de 'list'
  • Toda a biblioteca padrão teria as funções e métodos com nomes seguindo o modelo 'nome_nome' e nada de 'nomeNome' ou 'nomenome'.
No resto, acho que tudo está excelente em Python 3.

5 comentários:

Gustavo Sverzut Barbieri disse...

Poh Eduardo, ainda bem que não é seu! Exceto pelo último ponto (padrão de nomes) que eu concordo, do resto eu não gosto não!

Willian disse...

Concordo com tudo!

Osvaldo Santana Neto disse...

É... concordo com o Barbieri... ainda bem que não é seu :)

Você mesmo explica que não é fácil tirar o self sem perder algumas funcionalidades muito úteis da linguagem (como poder usar, mesmo que parcialmente, o paradigma de programação funcional em conjunto com OO).

Eu prefiro usar len(obj) porque eu leio 'tamanho do objeto)' e não 'objeto tamanho' (e olhe que eu sou fã de Smalltalk que usa 'obj length').

.join() tem que ser um método de string e não de lista para diminuir acoplamento entre os tipos de dados.

Qual é o resultado de um .join()? Uma string, certo? Colocando o método em list obrigaria list a conhecer str. Além disso .join() aceita qualquer objeto iterável e não somente listas e tuplas.

Osvaldo Santana Neto disse...

Esqueci de comentár o último item: nesse eu concordo com você.

Eles até deram uma reorganizada na stdlib mas ainda falta muita coisa pra mexer. O problema disso é não exagerar na quebradeira de código.

Osvaldo Santana Neto disse...

argh! s/comentár/comentar/ :)

Eu acho que ia escrever 'comentário' mudei de idéia rápido demais :)