LINUX.ORG.RU

История изменений

Исправление crutch_master, (текущая версия) :

Мне интересны его возможности в метапрограммировании. Вот, я, например, на js накидал:

#!/usr/bin/js
meta = function(fields) {
    for (i in fields) {
        var f = fields[i];
        var self = this;
        this[f] = null;
        this["get"+f] = function(fi) {return function() {return self[fi];}}(f);
        this["set"+f] = function(fi) {return function(v) {self[fi]=v;}}(f);
    }
}
function log(s) {console.log(s);}
var m = new meta(["foo", "bar", "baz"]);
log(m.getfoo());
log(m.getbar());
log(m.getbaz());
m.setfoo(5);
m.setbar(3);
m.setbaz(1);
log(m.getfoo());
log(m.getbar());
log(m.getbaz());
//null
//null
//null
//5
//3
//1
Как это будет выглядеть на питоне?

Исходная версия crutch_master, :

Мне интересны его возможности в метапрограммировании. Вот, я, например, на js накидал:

#!/usr/bin/js
meta = function(fields) {
    for (i in fields) {
        var f = fields[i];
        var self = this;
        this[f] = null;
        this["get"+f] = function(fi) {return function() {return self[fi];};}(f);
        this["set"+f] = function(fi) {return function(v) {self[fi]=v;}}(f);
    }
}
function log(s) {console.log(s);}
var m = new meta(["foo", "bar", "baz"]);
log(m.getfoo());
log(m.getbar());
log(m.getbaz());
m.setfoo(5);
m.setbar(3);
m.setbaz(1);
log(m.getfoo());
log(m.getbar());
log(m.getbaz());
//null
//null
//null
//5
//3
//1
Как это будет выглядеть на питоне?