使用相同的方法根据条件返回不同的子对象

时间:2016-09-18 09:07:11

标签: python

我有一个从基类继承的两个子类。我在不同的脚本中有一个方法,它实际上会根据某些条件返回一个子类对象,这是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

1 个答案:

答案 0 :(得分:0)

Python是一种动态类型语言。一个不声明类型。因此,从这一方面来说,传递参数并返回任何类型的值都是完美的。

另一方面,您希望对象可用,因此必须遵守某些界面。例如,您通常可以使用readreadline方法传递任何对象,而不是打开的文件。这不仅是可以接受的,而且实际上是Python相对于其他语言的强大优势之一。

在这个问题中,案例甚至比Python中通常做的更清晰。这种模式即使在例如更严格的C ++(见this question)。

<强> TL; DR:

是的,没关系。只要AB看起来和行为(和quacked)对于使用C的代码足够相似,就可以继承test_func工作。