Re: Re: extending PersistentList

Lars van Gemerden <[email protected]>
Newsgroups gmane.comp.web.zope.zodb
Message-ID <[email protected]>
BTW, i don't know how to contact the admin of this group, but would it be 
possible to change a setting so the writers of posts can edit them (i 
always find typo's etc. after i click post :-). Google says it's possible.

Thanks ..

On Tuesday, May 10, 2016 at 10:35:10 PM UTC+2, Lars van Gemerden wrote:
>
> I am storing the list items in self.items. 
>
> Sequence and its subclass MutableSequence is designed in such a way that 
> by implementing the abstract methods (the methods implemented in 
> PersistentList2), all other standard list methods (like extend, slicing, 
> etc.) follow suit. They basically all call the overridden abstract methods 
> to do the actual item lookup or list mutations. By just overriding these 
> couple of method, e.g. calling extend will also set _p_changed to 1.
>
> The original PersistentList is a subclass of UserList, which is a subclass 
> of MutableSequence as well, but then overrides all methods 
> of MutableSequence, which makes the inheritance pointless. It probably is a 
> little faster though because it less method calls are used. Another 
> disadvantage of this is that if you want to override PersistentList, you 
> likely will have to override or extend all methods, which is error prone, 
> and more code to maintain.
>
> self.owner.__dirty__ = True is a way for me to keep track of changed 
> objects (setting the containing object's __dirty__ to True in a 
> descriptor), for syncing between web clients and server (it needs work 
> though, i am learning somethings from zodb as well ;-). The idea is to use 
> classes in a python client that are (only) defined on the server.
>
> Anyway, thnaks for the feedback. May i conclude that,apart from the 
> MutableSequence stuff, PersistentList2 should work with zodb persistence?
>
> Cheers, Lars
>
>
>
> On Sunday, May 8, 2016 at 1:37:37 PM UTC+2, Christopher Lozinski wrote:
>>
>> At first it all looked too easy. 
>>
>> PersistentList stores the objects in itself, and is complex. It is indeed easier to create 
>> PersistentList2 by pointing to a List object and updating _p_changed.
>>
>> So I will assume that you are storing your objects in the attached list, and not in the 
>> PersistentList2 itself.
>>
>> But then you do not need to subclass off of MutableSequence. Worse yet, 
>> if you do subclass off of 
>> MutableSequence, but only implement some of the methods, for example no 
>> slice methods, if you ever use the slice method, it will execute on the 
>> object itself, and not on the linked to list. 
>>
>> Here are some other comments.
>>
>> It was a great idea to separate out your application code ServerField 
>> List from PersistentList2.  
>>
>> Makes it much easier for us to understand what you are doing, and the 
>> relevance to everyone else. 
>>
>> You did not say what is wrong with Persistent List.  What is it that you 
>> are trying to add.  Maybe someone else
>>
>> has already done it? 
>>
>> What is that  
>>
>>    self.owner.__dirty__ = True
>> all about?
>> Hope that helps.
>> Chris
>>
>>

-- 
You received this message because you are subscribed to the Google Groups "zodb" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
For more options, visit https://groups.google.com/d/optout.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.