New submission from Kevin Rocard:

Extracted from xml.dom.minidom:
~~~
Node(...):
   ...
   ownerDocument = None
   ...

Element(Node):
    __slots__=('ownerDocument', ...)
    ...
~~~

As Element declares an ownerDocument attribute in __slots__, Node's 
ownerDocument attribute is hidden:
~~~
class B: b=1;
class D(B): __slots__={'b'}
D().b -> AttributeError
~~~

This leads to a strange behaviour were accessing a base attribute fails with an 
attribute error.

Should the Node.ownerDocument attribute not be removed?
Or its name removed from the Element.__slots__ list?
Ie have the attribute in the base or the derivative, but not both.

Independent note: <https://docs.python.org/3/reference/datamodel.html#slots> 
says:
> When inheriting from a class without __slots__ [Node], the __dict__ attribute 
> of that class will always be accessible, so a __slots__ definition in the 
> subclass [Element] is meaningless.

So as for as I understand Element.__slots__ does not reduce the Element() 
footprint (it was introduced for that).

----------
components: Library (Lib)
messages: 235700
nosy: krocard
priority: normal
severity: normal
status: open
title: xml.dom.minidom.Element.ownerDocument is hiden
type: enhancement
versions: Python 3.4

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue23436>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to