gpt4 book ai didi

python - 在 Python 中给一个类起别名

转载 作者:太空宇宙 更新时间:2023-11-04 06:45:25 26 4
gpt4 key购买 nike

我正在编写一个类来实现一个算法。该算法具有三个级别的复杂性。实现这样的类对我来说很有意义:

class level0:
def calc_algorithm(self):
# level 0 algorithm
pass

# more level0 stuff

class level1(level0):
def calc_algorithm(self):
# level 1 algorithm
pass

# more level1 stuff

class level2(level1):
def calc_algorithm(self):
# level 2 algorithm
pass

# more level2 stuff

我希望 calc_algorithm 将在每个类中被覆盖。根据某个命令行选项,我想对数据运行 0 级、1 级或 2 级。这就是我对算法的称呼:

for offset in itertools.product(*map(xrange, (dim[0] - 1, dim[1] - 1, dim[2] - 1))):
algorithm(offset).calc_algorithm

其中 algorithmlevel0level1level2

我在其他语言中的做法是:

for offset in itertools.product(*map(xrange, (dim[0] - 1, dim[1] - 1, dim[2] - 1))):
if (level == 0):
level0(offset).calc_algorithm
else:
if (level == 1):
level1(offset).calc_algorithm
else:
level2(offset).calc_algorithm

有没有一种 Pythonic 的方法来给一个类起别名来引用另一个类,这样我就可以这样做:

algorithm = (level == 0) and level0 or (level == 1) and level1 or level2

然后像上面那样调用algorithm


只是为了比较,在 Specman 中,这是一种面向方面的语言,我可以这样编写类:

struct algorithm {
level: uint;
// common stuff for all levels

calc_algorithm() is empty;

when (level == 0) {
calc_algorithm() is only {
// level 0 algorithm
};
};
when (level == 1) {
calc_algorithm() is only {
// level 1 algorithm
};
};
when (level == 1) {
calc_algorithm() is only {
// level 1 algorithm
};
};

};

然后一旦我设置了 level 结构成员,我就可以透明地使用该类的其余部分。

最佳答案

您是否正在寻找类似的东西?

dispatch = {0: level0, 1: level1, 2:level2}
dispatch[offset].calc_algorithm

键(和 offset)显然可以来自命令行。

关于python - 在 Python 中给一个类起别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1369534/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com