我有一个从基类继承的两个子类。我在不同的脚本中有一个方法,它实际上会根据某些条件返回一个子类对象,这是python中使用相同方法返回不同子对象的正确方法。我认为是的,因为它们的类型是相同的,它们是从同一个基类继承的?或者应该进行类型铸造?请指导以下示例仅用于简单解释问题。
class A():
class B(A):
Different methods
class C(A):
Different methods
其他剧本:
def test_func:
if <some-condition>
new_obj = B()
else
new_obj = C()
return new_obj
答案 0 :(得分:0)
Python是一种动态类型语言。一个不声明类型。因此,从这一方面来说,传递参数并返回任何类型的值都是完美的。
另一方面,您希望对象可用,因此必须遵守某些界面。例如,您通常可以使用read
和readline
方法传递任何对象,而不是打开的文件。这不仅是可以接受的,而且实际上是Python相对于其他语言的强大优势之一。
在这个问题中,案例甚至比Python中通常做的更清晰。这种模式即使在例如更严格的C ++(见this question)。
<强> TL; DR:强>
是的,没关系。只要A
和B
看起来和行为(和quacked)对于使用C
的代码足够相似,就可以继承test_func
工作。