Когда я перехожу из JavaScript в Python, я заметил, что не понял способ добавления свойств к классам типов данных. Например, в JavaScript, если бы я хотел, чтобы иметь возможность ввести arr.last
и он возвращает последний элемент в массиве arr
, или введите arr.last = 'foo'
и установить последний элемент 'foo'
, я хотел бы использовать:Python эквивалент JavaScript `Object.defineProperty()`
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"]
Однако в Python, я не знаю, как сделать эквивалент Object.defineProperty(X.prototype,'propname',{get:function(){},set:function(){}});
Примечание: Я являюсь не с просьбой о том, как сделать конкретный пример функции, я стараюсь, чтобы иметь возможность определить свойство с get
и set
на типы примитива данных (строка, INT, поплавок, список, Словарь, набор и т.д.)
Может быть, вы хотите, чтобы прочитать о [стандартных типов] (https: // Docs. python.org/3/library/stdtypes.html)? Вы можете делать это прямо в Python, без мешающих бит, мешающих. Другими словами, при попытке определить свойства и getters/seters у вас, вероятно, есть [проблема XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). – TigerhawkT3