different types of inheritence...
zipher
dreamingforward at gmail.com
Thu May 21 22:14:49 EDT 2015
Still considering distinguishing between different types of inheritance.
Apart from object composition or mix-in style, I want to illustrate something regarding the "arrow" of inheritance.
class super_dict(dict):
def __init__(self, init={}, default_value=0, collision_function=None):
*expands what dict can do*
def get_default(self): #stupid method to illustrate a point
return self._default_value
class specialized_dict(dict):
def update(self, other):
*change the behavior of how updates work*
def setdefault(self, key, value):
if key=sentinel:
self[key]=0
else:
self[key]=value
These look like the standard is-a inheritance, but they are very different.
The first goes upwards, making a super-class, the other drills downwards and makes dict more specialized. The former expands on the capability and the API, the latter keeps the exact API but modifies the method behaviors. The former becomes a more general type, the latter becomes a more specific type.
Steven D'Aprano was arguing a couple of years ago that there is no difference, one can simply turn the inheritance diagram upside-down. But here it can be seen that that's not an option
Anyone else see the significance? Sorry to be a PITA...
Mark
More information about the Python-list
mailing list