The prototype does, now I have to implement the real thing.

Is there any way to add this info to the documentation? It took me a lot of trial and error to figure out how to do what I wanted.
S.


* Travis Scrimshaw <tsc...@ucdavis.edu> [2019-09-26 15:11:07]:

So it works now, correct?

Best,
Travis


On Friday, September 27, 2019 at 12:42:23 AM UTC+10, Salvatore Stella wrote:

Oops, I think that I figured out where the mistake was. Here is the
correct
code:

class OldFoo(UniqueRepresentation):

    @staticmethod
    def __classcall__(self, data, **kwargs):
        hashable_data = tuple(data)
        kwargs['some_default_option'] = 'bar'
        return super(OldFoo, self).__classcall__(self, hashable_data,
**kwargs)

    def __init__(self, data, **kwargs):
        self._data = data
        self._some_default_option = kwargs['some_default_option']

    def __repr__(self):
        return 'Data = %s, option = %s'%(self._data,
self._some_default_option)

class NewFoo(OldFoo):

    @staticmethod
    def __classcall__(self, data, **kwargs):
        new_data = data+data
        return super(NewFoo, self).__classcall__(self, new_data, **kwargs)


Thanks
S.



* Travis Scrimshaw <tsc...@ucdavis.edu <javascript:>> [2019-09-25
16:59:13]:

>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-...@googlegroups.com <javascript:>.
>To view this discussion on the web visit
https://groups.google.com/d/msgid/sage-devel/5475d883-8c54-4a8b-8fb5-f33859e464a3%40googlegroups.com.




--
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/869947d6-8388-4455-96a2-75550bad4dd1%40googlegroups.com.

--
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/20190926221344.GA22561%40bunion.

Reply via email to