当我从JavaScript转换到Python时,我注意到我还没有找到一种向数据类型类添加属性的方法。
例如,在JavaScript中,如果我希望能够键入arr.last
,并让它返回数组arr
中的最后一个元素,或者键入arr.last = 'foo'
,并将最后一个元素设置为'foo'
,我将使用:
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(){}});
的等效操作
注意:我不是在问如何做特定的示例函数,我试图在原始数据类型(str、int、float、list、dict、set等)上定义一个带有get
和set
的属性。
请参阅^{} 函数的文档。它有一些例子。以下是Python 2.7.3下
print property.__doc__
的结果:在Python21中,向新样式的类(从
object
派生的类)添加新属性(也称为成员对象,包括方法)与简单地定义它们一样简单:我使用了Dan D.在his answer中提到的^{} 内建,但这实际上是在类创建之后分配属性,就像问题所问的那样。在
Online demo
1:在Python3中,它更简单,因为所有类都是新样式的类
如果我没听错,你想编辑现有的类(add方法)检查这个线程Python: changing methods and attributes at runtime
相关问题 更多 >
编程相关推荐