J'ai essayé de rechercher cette question dans Python Docs et d'autres blogs, mais je n'ai pas trouvé de réponse satisfaisante. Alors, nous allons. Dans le code suivant: Je comprends le premier décorateur @property code> définit la propriété. Est le @ x.geter code> redondant dans ce cas? Quand sont les deux méthodes nécessaires? P> P>
3 Réponses :
de La documentation : p>
Un objet de propriété contient des méthodes getter, setter et DELERSTER utilisables décorateurs qui créent une copie de la propriété avec le Fonction d'accesseur définie sur la fonction décorée. C'est mieux Expliqué avec un exemple: p> blockQuote>
est le @ x.geter redondant dans ce cas? Quand sont les deux méthodes nécessaires? P> blockQuote>
Le getter est totalement redondant et inutile. L'utilisation normale du réaccèsement X consiste à configurer le setter et le Delier, le getter est configuré via
@property code> déjà. P>
où une propriété est construite avec un getter, un setter et Deleter en utilisant Ce que vous faites est extrêmement inhabituel et ne fait pas t vraiment avoir un sens. Vous créez une propriété pour l'attribut @property code> crée une propriété avec la fonction décorée comme getter (et avec la docstring de la fonction décorée comme docstring). @ x.geter code>, où x code> est une propriété existante, crée une propriété nouvelle em> avec l'ancien setter, Deleter et Docstring de l'ancienne propriété, mais avec la fonction décorée comme getter. P> getter code> existe principalement pour la symétrie avec Setter code> et Deleter code>, qui crée des copies d'une propriété avec un nouveau setter ou Deleter respectivement. L'étui d'utilisation prévu pour ces méthodes ressemble à p> @ bla.setter code> et @ bla.delterter code>, et chaque définition de fonction décorée remplace l'ancienne propriété avec une nouvelle propriété plus complète. p> x code> avec un getter, puis vous utilisez @ x.geter code> pour la remplacer par une propriété différente avec un getter différent et équivalent (mais le La Docstring de Old Getter, qui importerait si les deux fonctions getter n'avaient pas tous les deux Aucun code> docstrings). Il ne sert à rien de faire ça. P> p>
Je sais que c'est inhabituel. J'ai écrit le code aux fins de cette question. ;-)
Il y avait une erreur dans le code, pouvez-vous vérifier s'il vous plaît?
Réponse modifiée.
Ce code n'a pas de sens.
X.Getter code> ne fonctionne que car vous avez définix code> à l'avance. Étant donné quex code> est une fonction déjà quel est le point de cela?Ce n'est pas redondant exactement, il ajoute un second i> getter nommé
c code>. Mais le comportement est le même que si vous veniez d'écrire@property code> à nouveau.@ user2357112, pouvez-vous élaborer?