假设我有一个带有未实现方法的基类,如下所示:
class Polygon():
def __init__(self):
pass
def perimeter(self):
pass
def area(self):
pass
现在,假设我的一位同事使用 Polygon 类创建一个子类,如下所示:
import math
class Circle(Polygon):
def __init__(self, radius):
self.radius = radius
def perimeter(self):
return 2 * math.pi * self.radius
(H/Sh)e 忘记实现 area() 方法。
如何强制子类实现父类的 area() 方法?
原文由 Aditya Barve 发布,翻译遵循 CC BY-SA 4.0 许可协议
这可能是你的父类:
虽然只有在运行时才会发现问题,但当子类的一个实例试图调用这些方法之一时。
一个不同的版本是使用
abc.abstractmethod
。如果没有实现所有方法,您将无法实例化
Circle
。这是
python 3
语法;在python 2
你需要另请注意,对于二进制特殊函数
__eq__(), __lt__(), __add__(), ...
最好是return NotImplemented
而不是提高NotImplementedError
。