Hi Andrey, Just to clarify, I only wanted to subclass Cones, but not Fans. The fan is a container class for cones and that doesn't change. In particular, I never felt the need to add any functionality at that level in my code.
As for sharing of cached data, I think a clearer way would be to define a copy method in addition to the creation in the factory. Then we just have to extend RationalPolyhedralFan to * create new cone if cone was specified by point indices, and * copy if the cone is already a cone of a (different) fan (that is, c.is_Cone()==True) For example: class Cone_of_fan_Factory(SageObject): def new(self, fan_rays, fan_generating_cones, fan): return Cone_of_fan(fan_rays, fan_generating_cones, fan) def copy(self, cone): new_cone = copy(cone) cone.__class__ = Cone_of_fan I think your timeline looks good! Best wishes, Volker -- To post to this group, send an email to sage-devel@googlegroups.com To unsubscribe from this group, send an email to sage-devel+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URL: http://www.sagemath.org