abstract class return 应该与预期的实现方法相同的类型吗?

should abstract class return same type as expected implemented method?

我正在使用 Python abc 包来声明抽象 类。当我定义一个抽象方法时,我应该 return 一个与预期类型相同的空对象还是简单地 pass?

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 吗?

您可以通过将 return 类型设置为列表来更新 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