должен ли абстрактный класс возвращать тот же тип, что и ожидаемый реализованный метод? - PullRequest
0 голосов
/ 28 сентября 2018

Я использую пакет Python abc для объявления абстрактных классов.Когда я определяю абстрактный метод, должен ли я возвращать пустой объект того же типа, что и ожидалось, или просто pass? enter 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 голосов
/ 28 сентября 2018

Вы можете обновить строку документации в method1, установив тип возвращаемого значения list.

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
...