Note that there are some explanatory texts on larger screens.

plurals
  1. POPython: problem with deepcopy(ing) a TypedList class inheriting from list and overriding append
    primarykey
    data
    text
    <p>I don't understand why the new instance of the <code>TypeList</code> class does not have a <code>my_type</code> attribute.</p> <p>t.i.a. for any help</p> <p>Here is my code:</p> <pre><code>import copy class TypedList(list): def __init__(self, typeof, iterable=''): """ Initialize the typed list. Examples: tmp = TypedList(str, 'foobar') # OK tmp = TypedList('str', 'foobar') # FAIL! """ if not issubclass(type(typeof), object): raise TypeError('typeof must inherit from object') if type(typeof) is not type: raise TypeError('typeof, argument must be a python object type.\n' 'Not a string stating the type of python object.\n' 'Example: TypedList(str), not Typedlist("str")') self.my_type = typeof for item in iterable: if type(item) != self.my_type: raise TypeError('%s is of type %s; it should be type %s' % (item, type(item), self.my_type)) super(TypedList, self).__init__(iterable) def append(self, item): """ Append an item to the typed list. """ if type(item) != self.my_type: raise TypeError('item must be of type %s' % self.my_type) return super(TypedList, self).append(item) if __name__ == '__main__': foo = TypedList(str, 'test') bar = copy.deepcopy(foo) </code></pre> <p>Executing it returns this output:</p> <pre><code>$ python tl.py Traceback (most recent call last): File "tl.py", line 53, in &lt;module&gt; bar = copy.deepcopy(foo) File "/usr/lib/python2.6/copy.py", line 189, in deepcopy y = _reconstruct(x, rv, 1, memo) File "/usr/lib/python2.6/copy.py", line 329, in _reconstruct y.append(item) File "tl.py", line 46, in append if type(item) != self.my_type: AttributeError: 'TypedList' object has no attribute 'my_type' </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload