IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Python et la bonne pratique de codage


Sujet :

Python

  1. #1
    Membre habitué
    Avatar de Zorro
    Inscrit en
    Août 2002
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 137
    Points : 130
    Points
    130
    Par défaut Python et la bonne pratique de codage
    Salut
    Voila je me demande la quelle de ces deux solutions est la bonne pratique de codage, concernant l'utilisation de len ou __len__

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    d = ['www','developpez','com']
    if d.__len__() =3:
        print '.'.join(d)
    ou bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    d = ['www','developpez','com']
    if len(d) =3:
        print '.'.join(d)
    Merci
    Z

  2. #2
    Membre expérimenté Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Points : 1 728
    Points
    1 728
    Par défaut
    salut,

    je dirais len(), puisqu'il est deconseillé d'utiliser les methodes privées. (mais pas interdit comme dans beaucoup d'autre langages).

    C'est mon avis, mais je veux bien le partager

  3. #3
    Membre habitué
    Avatar de Zorro
    Inscrit en
    Août 2002
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 137
    Points : 130
    Points
    130
    Par défaut
    Mais je me demande pourquoi un fonction interne ou langage soit-elle accessible si facilement ? Ce pour être utiliser non ?

    Je ne veux pas prendre de risque d’utiliser une fonction interne qui va être changer ou supprimer plus tard.

    Z

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    len appelle cette fonction directement. Le petit truc, c'est sait plus facilement ce qui se passe en faisant len(d) que d.__len__().
    Les méthodes avec des __ devant ne devraient jamais être appelées, mais pour les gens qui veulent se compliquer la vie, c'est possible.

  5. #5
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut
    la méthode __len__ sert si on veut la redéfinir cette fonction dans une autre classe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class a(list): 
        def __len__(self): return 6
     
    >>> b = a([1,2,3])
    >>> b
    [1, 2, 3]
    >>> type(b)
    <class '__main__.a'>
    >>> len(b)
    6

  6. #6
    Membre habitué
    Avatar de Zorro
    Inscrit en
    Août 2002
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 137
    Points : 130
    Points
    130
    Par défaut
    ça c'est dangereux ça, Alors je vais rester avec len(), même si j'aurait aimes avoir un truc du genre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> d = [1,2,3,4,5,6,7,8,9,0]
    >>> d.len()
    10

    Z

  7. #7
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Pourquoi tu veux une méthode membre ? D'un point de vue modularité, c'est à limiter le plus possible, d'autant plus que Python possède le duck typing ! - c'est aussi pour ça que je ne comprend pas trop pourquoi les chaînes de caractères possèdent tant de méthodes... -

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Bonnes pratiques de codage en langage C
    Par Emmanuel Delahaye dans le forum C
    Réponses: 8
    Dernier message: 13/01/2017, 18h02
  2. Ressource / Documentation python concernant les bonnes pratiques
    Par Arkal dans le forum Général Python
    Réponses: 6
    Dernier message: 03/10/2013, 20h55
  3. Bonnes pratiques de codage en MATLAB
    Par Caro-Line dans le forum Contribuez
    Réponses: 8
    Dernier message: 22/06/2009, 16h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo