动态选择继承的类

tao*_*ocp 34 python inheritance class

我的Python知识有限,我需要一些帮助来解决以下问题.

假设我有两个类AB,是有可能做类似如下(概念)在Python:

import os
if os.name == 'nt':
    class newClass(A):
       # class body
else:
   class newClass(B):
       # class body
Run Code Online (Sandbox Code Playgroud)

所以问题是我想创建一个类newClass,它将根据平台差异从不同的基类继承,这可能在Python中做吗?谢谢.

ars*_*jii 68

您可以使用条件表达式:

class newClass(A if os.name == 'nt' else B):
    ...
Run Code Online (Sandbox Code Playgroud)

  • 女士们,先生们,让我们听听它的Python. (11认同)
  • 虽然如果你真实能够,如果你有条件地在另一个模块中创建一个带有单个变量名的A或B,然后将你指定给A或B的名称导入到其他地方,那么很有可能更好的抽象. (4认同)
  • 如此美丽. (2认同)

Hen*_*ter 12

是的,你可以做你写的.虽然就个人而言,我可能会这样做以保持清洁:

class _newClassNT(A):
    # class body

class _newClassOther(B):
    # class body

newClass = _newClassNT if os.name == 'nt' else _newClassOther
Run Code Online (Sandbox Code Playgroud)

这假设你需要在类体内实现不同的实现.如果您需要更改继承,您可以在if那里嵌入一​​个语句:

class newClass(A if os.name == 'nt' else B):
    # class body
Run Code Online (Sandbox Code Playgroud)