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
我正在使用 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