Lorsque je suis passé de JavaScript à Python, j'ai remarqué que je n'avais pas trouvé de moyen d'ajouter des propriétés aux classes de types de données. Par exemple, en JavaScript, si je voulais être capable de taper arr.last
et avoir retourne le dernier élément du tableau arr
, ou tapez arr.last = 'foo'
et pour définir le dernier élément à 'foo'
, je voudrais utiliser:L'équivalent Python de `Object.defineProperty()` JavaScript `
Object.defineProperty(Array.prototype,'last',{
get:function(){
return this[this.length-1];
},
set:function(val){
this[this.length-1] = val;
}
});
var list = ['a','b','c'];
console.log(list.last); // "c"
list.last = 'd';
console.log(list); // ["a","b","d"]
Cependant, en Python, je ne sais pas comment faire l'équivalent de Object.defineProperty(X.prototype,'propname',{get:function(){},set:function(){}});
note: Je suis pas demander comment faire la fonction exemple spécifique, je suis en train de pouvoir définir une propriété avec get
et set
sur les types de données primitives (str, int, float, liste, dict, jeu, etc.)
Peut-être que vous voulez lire sur les [types standards] (https: // docs. python.org/3/library/stdtypes.html)? Vous pouvez faire cela directement en Python, sans entrave. En d'autres termes, en essayant de définir les propriétés et les getters/setters, vous avez probablement un [XY Problem] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). – TigerhawkT3