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?

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to