TypeError:无法实例化抽象类< ...>用抽象的方法

时间:2017-09-30 17:03:29

标签: python python-2.7 python-3.x

这是我的代码:

from abc import ABC
from abc import abstractmethod

class Mamifiero(ABC):
    """docstring for Mamifiero"""
    def __init__(self):
        self.alimentacion = 'carnivoro'

    @abstractmethod
    def __respirar(self):
        print('inhalar... exhalar')


class Perro(Mamifiero):
    """docstring for Perro"""
    def __init__(self, ojos=2,):
        self.ojos = ojos

我希望perro.respirar()打印'inhalar... exhalar',但是当我想要实例化Perro类时,请显示此错误。我想知道我的脚本有什么问题

1 个答案:

答案 0 :(得分:1)

根据定义(读取文档),抽象调用是一个不能实例化的类,直到它有任何未被覆盖的抽象方法。因此,在面向对象的设计编程中。

您有一个不会被覆盖的抽象方法Perro.__respirar(),它继承自父类。或者,使用方法Perro.__respirar()覆盖它,并在那里做一些事情(甚至可能调用父方法;但是当它是私有的双下划线时,当然不会。)

如果要实例化Perro,请不要将该方法抽象化。让它正常。因为它也有一些实现,这表明它是一种普通的基类方法,而不是抽象方法。