wiki:WikiStart

Version 4 (modified by atzm, 18 years ago) (diff)

--

Hoge Knowledge

trac 入れてみたはいいけど,特に書くことが思いつきませんな.とりあえず WikiFormatting を覚えるのが先決.

頭のパズル

class AutoAccessor:
    _can_access = ['a', 'b', 'c']

    def __init__(self):
        for val in self._can_access:
            setattr(self, 'set_%s' % val, lambda x: setattr(self, val, x))
            setattr(self, 'get_%s' % val, lambda: getattr(self, val))

if __name__ == '__main__':
    ac = AutoAccessor()
    ac.set_a(0)
    ac.set_b(1)
    ac.set_c(2)

    print ac.get_a()
    print ac.get_b()
    print ac.get_c()

これだと val が束縛されていないため,最後にセットされる c に対してのみ有効となる. で,結果全て 2 が返る.どうにかならんもんか.

呼び出したメソッドの名前をメソッドの中から得ることができれば解決できるかも?