class Foo(object):
    bar = {'a': None, 'b': None}
    def do_something(self):
        print self.bar['a']
        self.bar['a'] = 12
what I'd like to do is:
- when read from - self.bar[xxx], I get the real value
- when write to - self.bar[xxx], call a setter to do the real setting.
Here is a real world example:
class VoteMixin(object):
    self._vote_nums = {'up': None, 'down': None}
    def fetch_from_db(self):
        self._vote_nums = {} # set with values read from db
    @property
    def up_vote_nums(self):
        if self._vote_nums['up'] is None:
            self.fetch_from_db()
        return self._vote_nums['up']
    @property
    def down_vote_nums(self):
        # the same
        pass
    def up_vote(self):
        # update to db
        if self.vote_nums['up'] is None:
            self.fetch_from_db()
        self._vote_nums['up'] += 1
    def down_vote(self):
        # update to db
        if self.vote_nums['down'] is None:
            self.fetch_from_db()
        self._vote_nums['down'] += 1
the problem is, I don't want to check if self._vote_nums['up or down'] is None each time I want to write to it.
