Although it almost sounds like you should be doing the NewFoo preparsing inside NewFoo.__classcall__ (or NewFoo.__classcall_private__), which then should get passed up and handled by OldFoo.__classcall__. You might need some extra *args or **kwds to the __init__ and/or __classcall__ to handle this. The other option would be to separate out the preparsing portion into a separate @classmethod or @staticmethod.
Best, Travis On Thursday, September 26, 2019 at 9:55:56 AM UTC+10, Travis Scrimshaw wrote: > > Make OldFoo.__classcall_private__, then it is not inherited. > > Best, > Travis > > > On Thursday, September 26, 2019 at 8:22:23 AM UTC+10, Salvatore Stella > wrote: >> >> Dear All, >> I would like to make a new class inheriting from a class based on >> UniqueRepresentation. My goal, among other things, is to preparse the >> arguments a little before calling the class I am inheriting from. >> Unfortunately this class also does some preparsing via __classcall__ to >> make >> the input hashable. Could you point me to the correct way of setting this >> up? >> >> Sketch of the situation: >> >> class OldFoo(UniqueRepresentation): >> >> @staticmethod >> def __classcall__(self, data): >> # make data hashable >> return super(oldFoo, self).__classcall__(self, hashable_data) >> >> def __init__(self, hashable_data): >> # do something >> >> class NewFoo(OldFoo): >> >> # First neutralize OldFoo __classcall__ >> __classcall__ = None >> >> def __init__(self, data): >> # preparse data then initialize OldFoo >> >> >> If __classcall__ were not there I would call OldFoo.__init__ but this >> does >> not seem to work with OldFoo.__classcall__ >> >> >> Thanks >> S. >> >> >> >> -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/5475d883-8c54-4a8b-8fb5-f33859e464a3%40googlegroups.com.