Instantiating abstract classes
Peter Otten
__peter__ at web.de
Fri May 21 14:00:23 EDT 2021
Usually an abstract class cannot be instantiated:
>>> from abc import ABCMeta, abstractmethod
>>> from fractions import Fraction
>>> class A(Fraction, metaclass=ABCMeta):
@abstractmethod
def frobnicate(self): pass
>>> A()
Traceback (most recent call last):
File "<pyshell#287>", line 1, in <module>
A()
File "C:\Program Files\Python39-32\lib\fractions.py", line 93, in __new__
self = super(Fraction, cls).__new__(cls)
TypeError: Can't instantiate abstract class A with abstract method
frobnicate
However, if I derive from a builtin class that mechanism doesn't work:
>>> class A(int, metaclass=ABCMeta):
@abstractmethod
def frobnicate(self): pass
>>> A()
0
Is this a bug, or an implementation accident, or the expected behavior?
More information about the Python-list
mailing list