[New-bugs-announce] [issue31127] Abstract classes derived from built-in classes don't block instance creation
Kevin Shweh
report at bugs.python.org
Sun Aug 6 15:00:42 EDT 2017
New submission from Kevin Shweh:
The only check that prevents instantiating abstract classes is in object.__new__, but most built-in classes never actually call object.__new__. That means you can do stuff like
import abc
class Foo(list, metaclass=abc.ABCMeta):
@abc.abstractmethod
def abstract(self):
pass
Foo()
and the Foo() call will silently succeed.
Ideally, the Foo() call should fail. Other options include having the Foo class definition itself fail, or just making a note in the documentation describing the limitation. (As far as I can see, this is currently undocumented.)
----------
assignee: docs at python
components: Documentation, Library (Lib)
messages: 299810
nosy: Kevin Shweh, docs at python
priority: normal
severity: normal
status: open
title: Abstract classes derived from built-in classes don't block instance creation
type: behavior
versions: Python 2.7, Python 3.6
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue31127>
_______________________________________
More information about the New-bugs-announce
mailing list