是否像在PHP中一样在python中实现了“接口”

时间:2019-09-28 16:51:04

标签: php python python-3.x

是否可以像在PHP中那样在Python 3.x中实现接口功能? 我想在父类中声明一个没有主体的方法,但我想强制覆盖在继承的类中的此方法。

(在PHP中,如果您不重写接口中声明的方法,则会收到错误消息)

以PHP方式(由于未实现 getModel()方法,因此出现错误消息):

interface Car { 
  public function setModel($name);
  public function getModel();
}

class miniCar implements Car {
  private $model; 

  public function setModel($name)
  { 
    $this -> model = $name; 
  }
}

1 个答案:

答案 0 :(得分:2)

查看abc模块:

from abc import ABC, abstractmethod

class Car(ABC):
    @abstractmethod
    def setModel(self, name): 
        ...

    @abstractmethod
    def getModel(self):
        ...

然后,如果您尝试实例化没有方法的类:

class MiniCar(Car):
    pass
x = MiniCar()

您得到

  

TypeError:无法使用抽象方法getModel,setModel实例化抽象类MiniCar