首页 > 解决方案 > Python:如何根据特定条件创建类

问题描述

这是问题陈述。

场景是我有很多平台,每个平台都有一定的独特身份,让我们把它看作是显卡、硬件、软件和接口。

  1. 每个平台都可以运行与给定平台兼容的特定命令集。

  2. 例子:

    • 平台1:生肖:GC1、HW1、SW1、INT1
    • ……
    • 平台 n : Star: GCn, HWn, SWn, int n

我需要以这样的方式编写代码,以便脚本分析它是哪个平台并运行特定于该平台的命令。

到目前为止,我已经尝试过,

class Platform(object):
a = None
B = None
C = None
D = None

def __init__(self, A,B, C, D):
    self.A = A
    self.B = B
    self.C = C
    self.D = D

class ZODIAC(Platform):

A = attr.A_map_dict

def __init__(self, A, B, C, D):
    super(ZODIAC, self).__init__(A, B, C, D)

标签: python

解决方案


我会创建一组子类,然后使用一个完全独立的方法来分析您的参数并生成您想要的类:

class Platform(object):
    a = None
    b = None
    ...
    def __init__(self, A, B, C, D):
        ...
    ...
    def execute_commands():
         # abstract method - platform-specific, defined by subclasses

class ZODIAC(Platform):
    A = attr.A_map_dict
    ...
    @override
    def execute_commands():
        # platform-specific behavior, overriding superclass

def generate_platform(a, b, c, d):
    if a == 'onething' and b == 'anotherthing':
        return ZODIAC(a, b, c, d)
    elif c == 'somethingelse':
        return OTHER_PLATFORM(a, b, c, d)
    ...

以这样的方式编写generate_platform(),它可以根据给定的变量确定哪个平台是正确的。然后它将返回适当子类的实例Platform。这是多态性原理的例证,它是面向对象编程的支柱之一。


推荐阅读