By the way, I know that I can use a "property virtualizer", something
like this:

import inspect

class A:
    def __init__(self, prop=0):
        self.__prop = prop
       
    def _prop_get(self):
        return self.__prop
   
    def _prop_set(self, value):
        self.prop_set(value)
       
    def prop_set(self, value):
        print("Setting prop value in A to", value)
        self.__prop = value
       
    prop = property(_prop_get, _prop_set)


class B(A):
    def prop_set(self, value):
        print("Setting prop value in B to", value)
        super().prop_set(value)

class C(A):
    def prop_set(self, value):
        print("Setting prop value in C to", value)
        super().prop_set(value)

class D(B,C):
    pass


d = D(0)
d.prop=10


But this solution almost defeats the purpose of properties. E.g. a
property should look like an attribute, and its behaviour should be
manipulated through its name (and not another special method that must
be exposed to subclasses.)
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to