En utilisant le décorateur @property
, Python a complètement éliminé le besoin de getters et setters sur les propriétés de l'objet (certains pourraient dire 'attributs'). Cela rend le code beaucoup plus simple, tout en conservant l'extensibilité lorsque les choses doivent être plus complexes.Python: méthodes de prédicat en tant que propriétés?
Je me demandais ce que l'approche de Pythonic pour le type de méthode suivant est, cependant. Dire que j'ai la classe suivante:
class A(object):
def is_winner(self):
return True # typically a more arcane method to determine the answer
Ces méthodes prennent généralement pas d'arguments, et sans effets secondaires. On pourrait appeler ces prédicats. Et compte tenu de leur nom, ils ressemblent souvent à quelque chose que l'on aurait aussi stocké comme une propriété.
Je suis enclin à ajouter un décorateur @property
à ce qui précède, afin de pouvoir l'appeler comme une propriété d'objet (à savoir foo.is_winner
), mais je me demandais si cela est la chose à faire la norme. À première vue, je n'ai trouvé aucune documentation sur ce sujet. Existe-t-il une norme commune pour cette situation?
Si cela rend votre API * plus facile et plus propre à utiliser *, alors par tous les moyens, optez pour la propriété @! Vous n'avez pas besoin d'un guide de style pour vous le dire. –
Eh bien, le premier changement évident qui doit être fait afin de rendre Pythonic est d'arrêter de camelcasing noms de méthodes. – rightfold
Vous pouvez éviter d'utiliser des méthodes coûteuses (calcul ou E/S) dans les propriétés, du moins si vous ne les notez pas. –