Comments on: Les annotations en Python 3 http://sametmax.com/les-annotations-en-python-3/ Deux développeurs en vadrouille qui se sortent les doigts du code Wed, 05 Feb 2014 12:15:31 +0000 hourly 1 http://wordpress.org/?v=3.3.1 By: Sam http://sametmax.com/les-annotations-en-python-3/#comment-16611 Sam Thu, 05 Dec 2013 09:40:37 +0000 http://sametmax.com/?p=7602#comment-16611 Il n'y a pas de règle syntaxique sur les espaces qui soient rendues obligatoires par le langage. Le PEP8 lui-même ne donne pas de règle mais : <blockquote>The Python standard library will not use function annotations as that would result in a premature commitment to a particular annotation style. Instead, the annotations are left for users to discover and experiment with useful annotation styles.</blockquote> C'est une fonctionnalité bac à sable, ne l'oublions pas. Il n’y a pas de règle syntaxique sur les espaces qui soient rendues obligatoires par le langage.

Le PEP8 lui-même ne donne pas de règle mais :

The Python standard library will not use function annotations as that would result in a premature commitment to a particular annotation style. Instead, the annotations are left for users to discover and experiment with useful annotation styles.

C’est une fonctionnalité bac à sable, ne l’oublions pas.

]]>
By: JeromeJ http://sametmax.com/les-annotations-en-python-3/#comment-16602 JeromeJ Thu, 05 Dec 2013 00:27:08 +0000 http://sametmax.com/?p=7602#comment-16602 T'es sûr qu'il faut un espace après les ":" et avant l'annotation ? Ça me paraît dégueu mais c'est peut-être moi qui me trompe, dans ce cas là, je serais déçu ! C'est mouche comme ça! T’es sûr qu’il faut un espace après les “:” et avant l’annotation ?

Ça me paraît dégueu mais c’est peut-être moi qui me trompe, dans ce cas là, je serais déçu ! C’est mouche comme ça!

]]>
By: Sam http://sametmax.com/les-annotations-en-python-3/#comment-15646 Sam Mon, 11 Nov 2013 18:39:48 +0000 http://sametmax.com/?p=7602#comment-15646 Après check, tu as raison. Je sais pas pourquoi j'ai clairement cette image des comments utiliser pour le typing. Je dois mixer deux projets, mais alors retrouver d'où ça vient... Après check, tu as raison. Je sais pas pourquoi j’ai clairement cette image des comments utiliser pour le typing. Je dois mixer deux projets, mais alors retrouver d’où ça vient…

]]>
By: Xavier Combelle http://sametmax.com/les-annotations-en-python-3/#comment-15644 Xavier Combelle Mon, 11 Nov 2013 17:43:12 +0000 http://sametmax.com/?p=7602#comment-15644 Si je me trompe pas RPython n'utilise pas les annotation, mais un sous ensemble de python suffisamment simple pour que l'inférence de type fonctionne. Si je me trompe pas RPython n’utilise pas les annotation, mais un sous ensemble de python suffisamment simple pour que l’inférence de type fonctionne.

]]>
By: swordofpain http://sametmax.com/les-annotations-en-python-3/#comment-15437 swordofpain Wed, 06 Nov 2013 20:35:18 +0000 http://sametmax.com/?p=7602#comment-15437 Donc, si je suis bien, ça veut dire qu'il serait possible d'utiliser un décorateur pour faire de la validation de type automatique si on annote les types des paramètres ? Ça peut être sympa en effet :–) Donc, si je suis bien, ça veut dire qu’il serait possible d’utiliser un décorateur pour faire de la validation de type automatique si on annote les types des paramètres ? Ça peut être sympa en effet :–)

]]>
By: roro http://sametmax.com/les-annotations-en-python-3/#comment-15436 roro Wed, 06 Nov 2013 18:46:35 +0000 http://sametmax.com/?p=7602#comment-15436 à Sekigo: AhAh ! coin coin miaou piou piou..Trop bon ! à Sekigo: AhAh ! coin coin miaou piou piou..Trop bon !

]]>
By: Sam http://sametmax.com/les-annotations-en-python-3/#comment-15435 Sam Wed, 06 Nov 2013 18:38:42 +0000 http://sametmax.com/?p=7602#comment-15435 Ce qui suppose qu'on utilise du ABC partout, ce qui est fort relou. Python n'est pas Java. Ce qui suppose qu’on utilise du ABC partout, ce qui est fort relou. Python n’est pas Java.

]]>
By: Sekigo http://sametmax.com/les-annotations-en-python-3/#comment-15433 Sekigo Wed, 06 Nov 2013 18:18:33 +0000 http://sametmax.com/?p=7602#comment-15433 Bonjour. Pour le duck-typing, il ne sera pas "cassé" si on utilise intelligemment la vérification de type via une structure (à l'aide du module ABC) comme celle-ci: <pre lang="python"> # -*- coding: utf-8 -*- from __future__ import unicode_literals, print_function, division from abc import ABCMeta, abstractmethod class Canard(object): __metaclass__ = ABCMeta @abstractmethod def coin_coin(self): return "coin_coin !" @classmethod def __subclasshook__(cls, C): if cls is Canard: if any("coin_coin" in B.__dict__ for B in C.__mro__): return True return NotImplemented class Caneton(Canard): def coin_coin(self): return "piou-piou !" class Chat(object): def coin_coin(self): return "miaou-miaou !" def vieux_bigleux_qui_jette_bout_de_pain(canard): assert isinstance(canard, Canard) print(canard.coin_coin()) vieux_bigleux_qui_jette_bout_de_pain(Caneton()) vieux_bigleux_qui_jette_bout_de_pain(Chat()) </pre> Désolé, c'est un peu brut comme code (et c'est du python2.7), mais on peut imaginer vérifier le type canard via une instance. L'important étant qu'il ait les bonnes méthodes, qu'il soit réellement un canard, on s'en fout. (J'espère que le code va être correctement indenté...) Bonjour.

Pour le duck-typing, il ne sera pas “cassé” si on utilise intelligemment la vérification de type via une structure (à l’aide du module ABC) comme celle-ci:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals, print_function, division
from abc import ABCMeta, abstractmethod
 
class Canard(object):
    __metaclass__ = ABCMeta
 
    @abstractmethod
    def coin_coin(self):
        return "coin_coin !"
 
    @classmethod
    def __subclasshook__(cls, C):
        if cls is Canard:
            if any("coin_coin" in B.__dict__ for B in C.__mro__):
                return True
        return NotImplemented
 
 
class Caneton(Canard):
    def coin_coin(self):
        return "piou-piou !"
 
 
class Chat(object):
    def coin_coin(self):
        return "miaou-miaou !"
 
 
def vieux_bigleux_qui_jette_bout_de_pain(canard):
    assert isinstance(canard, Canard)
    print(canard.coin_coin())
 
 
vieux_bigleux_qui_jette_bout_de_pain(Caneton())
vieux_bigleux_qui_jette_bout_de_pain(Chat())

Désolé, c’est un peu brut comme code (et c’est du python2.7), mais on peut imaginer vérifier le type canard via une instance. L’important étant qu’il ait les bonnes méthodes, qu’il soit réellement un canard, on s’en fout.
(J’espère que le code va être correctement indenté…)

]]>
By: roro http://sametmax.com/les-annotations-en-python-3/#comment-15424 roro Wed, 06 Nov 2013 13:07:10 +0000 http://sametmax.com/?p=7602#comment-15424 <span class="tusors"></span>Qu'en est-il de l'annotation vide ? Qu’en est-il de l’annotation vide ?

]]>
By: Syl http://sametmax.com/les-annotations-en-python-3/#comment-15421 Syl Wed, 06 Nov 2013 09:28:54 +0000 http://sametmax.com/?p=7602#comment-15421 @kontre: merci pour l'info! S&M est aussi un excellent site pour amléiorer sa culture générale! ^^ @kontre: merci pour l’info!
S&M est aussi un excellent site pour amléiorer sa culture générale! ^^

]]>