Python:如何根据某些条件创建类

时间:2018-08-13 04:14:17

标签: python

这是问题陈述。

方案是我有很多平台,并且每个平台都有某些唯一的标识,可以将其视为图形卡,硬件,软件和界面。

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

  2. 示例:

    • 平台1 :生肖:GC1,HW1,SW1,INT1
    • ....
    • 平台n :星号: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)

1 个答案:

答案 0 :(得分:0)

我将创建一组子类,然后创建一个完全独立的方法来分析您的参数并生成所需的类:

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的适当子类的实例。这是多态性原理的例证,它是面向对象编程的支柱之一。