Message335166
Subclasses of io.IOBase can be instantiated with abstractmethod()s, even though ABCs are supposed to prevent this from happening. I'm guessing this has to do with io using the _io C module because the alternative pure-python implementation _pyio doesn't seem to have this issue. I'm using Python 3.6.7
>>> import _pyio
>>> import io
>>> import abc
>>> class TestPurePython(_pyio.IOBase):
... @abc.abstractmethod
... def foo(self):
... print('Pure python implementation')
...
>>> class TestCExtension(io.IOBase):
... @abc.abstractmethod
... def bar(self):
... print('C extension implementation')
...
>>> x=TestPurePython()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Can't instantiate abstract class TestPurePython with abstract methods foo
>>> y=TestCExtension()
>>> y.bar()
C extension implementation
>>> |
|
Date |
User |
Action |
Args |
2019-02-10 17:37:20 | Jon McMahon | set | recipients:
+ Jon McMahon |
2019-02-10 17:37:17 | Jon McMahon | set | messageid: <1549820237.63.0.597110746163.issue35958@roundup.psfhosted.org> |
2019-02-10 17:37:17 | Jon McMahon | link | issue35958 messages |
2019-02-10 17:37:17 | Jon McMahon | create | |
|