如何在具有条件的多重继承过程中避免伪冲突



是否可以在没有伪类的情况下重构多重继承?也许有人有类似的问题,或者有解决它的经验,或者至少告诉我该怎么看??

来自__init__.py的代码

from configuration.global_vars import IS_JENKINS_JOB, IS_TEST, IS_DOCKER, IS_TLF
from .base_runner import BaseRunner
from .base_runner_DOCKER import BaseRunnerDOCKER
from .base_runner_JENKINS import BaseRunnerJENKINS
from .base_runner_PROD import BaseRunnerPROD
from .base_runner_TEST import BaseRunnerTEST
from .base_runner_TLF import BaseRunnerTLF

class Dummy1:
pass

class Dummy2:
pass

class Dummy3:
pass

class CombinedBase(
BaseRunnerJENKINS if IS_JENKINS_JOB else Dummy1,
BaseRunnerDOCKER if IS_DOCKER else Dummy2,
BaseRunnerTLF if IS_TLF else Dummy3,
BaseRunnerTEST if IS_TEST else BaseRunnerPROD,
BaseRunner):
pass

在python中动态创建类型相对容易。

例如:

# you can use whatever logic to dynamically create the list of bases
base_classes = [
BaseRunnerJENKINS, 
BaseRunnerTLF, 
BaseRunner
]
# if you need to add custom methods to your new class:
class MyCustomClass:
def method(self, *args):
pass
# Create CombinedBase, inheriting from the MyCustomClass and the dynamic list.
CombinedBase = type('CombinedBase', (MyCustomClass, *base_classes), {})
print(CombinedBase.__bases__)
# (__main__.MyCustomClass, __main__.BaseRunnerJENKINS, __main__.BaseRunnerTLF, __main__.BaseRunner)

最新更新