抽象类应该返回与预期实现方法相同的类型吗?

时间:2018-09-28 08:18:01

标签: python abstract-class signature

我正在使用Python abc包声明抽象类。当我定义一个抽象方法时,我应该返回一个与预期类型相同的空对象还是简单地passenter image description here

MWE:

import abc


class A(abc.ABC):
    @abc.abstractmethod
    def method_1(self):
        """
        This abstract method should return a list
        """
        pass

    def method_2(self):
        list_output_method_1 = self.method_1()
        for x in list_output_method_1:
            pass

这样做,PyCharm在method_2中警告我有关不可迭代的list_output_method_1

我应该将return []放在method_1中吗?

1 个答案:

答案 0 :(得分:1)

您可以通过将返回类型设置为list来在method1中更新文档字符串。

import abc

class A(abc.ABC):
    @abc.abstractmethod
    def method_1(self):
        """
        This abstract method should return a list
        :rtype: list
        """
        pass

    def method_2(self):
        list_output_method_1 = self.method_1()
        for x in list_output_method_1:
            pass