OK got it. Lambda functions dont save their scope.

Here is the right code:

list = ["a","b","c","d"]
fields = []
for entry in list:
    fields += [Field(entry, type="string")]
db.define_table('test', *fields)
class MyVirtualFields(object):
    pass

def get_func(value):
    def func(self):
        return getattr(self.test, value)
    return fun

for entry in list:
    setattr(MyVirtualFields, entry +"_", get_func(entry))

db.test.virtualfields.append(MyVirtualFields())

Reply via email to