In article <[EMAIL PROTECTED]>,
Dustan <[EMAIL PROTECTED]> wrote:
>
>>>> class A(object):
>       def __init__(self, a):
>               self.a = a
>       def get_a(self): return self.__a
>       def set_a(self, new_a): self.__a = new_a
>       a = property(get_a, set_a)
>
>
>>>> class B(A):
>       b = property(get_a, set_a)

BTW, since you're almost certainly going to run into this quickly given
the direction your code is taking (and also to fix some bugs):

class A(object):
    def __init__(self, a):
        self._a = a

    def get_a(self):
        return self._a

    def _get_a(self):
        return self.get_a()

    def set_a(self, new_a):
        self._a = new_a

    def _set_a(self, new_a):
        self.set_a(new_a)

    a = property(_get_a, _set_a)

class B(A):
    def get_a(self):
        return str(self._a)

Thank Alex Martelli for this demonstration that programming is all built
on one basic trick: add another layer of indirection.  However, I leave
you to figure out on your own why this is better.

Note carefully that I changed __a to _a.  You almost never want to use
double-underscore private names because of the way they cause problems
with inheritance.

PS: Please do NOT post code with TABs
-- 
Aahz ([EMAIL PROTECTED])           <*>         http://www.pythoncraft.com/

"If you don't know what your program is supposed to do, you'd better not
start writing it."  --Dijkstra
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to