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 confirmé
    Avatar de Zorro
    Inscrit en
    Août 2002
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 137
    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 Expert 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
    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 confirmé
    Avatar de Zorro
    Inscrit en
    Août 2002
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 137
    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 : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    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 confirmé
    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 : 44
    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
    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 confirmé
    Avatar de Zorro
    Inscrit en
    Août 2002
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 137
    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 : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    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