具有多态性的类枚举

0 投票
1 回答
186 浏览
提问于 2025-04-14 17:44

在下面的这个Enum继承的例子中,当我们对成员的值调用一个多态方法时,结果却出乎意料。

from enum import Enum

class Activation:
    def activate(self, value):
        print("in activation")
        pass

    def derivative(self, value):
        pass

class Relu(Activation):
    def activate(self, value):
        print('in relu')
        return max(0, value)

    def derivative(self, value):
        return 0 if value<= 0 else 1

class Activations(Activation, Enum):
    RELU = Relu()
    #TANH = Tanh()
    #SIGMOID = Sigmoid()
    #SOFTMAX = Softmax()

activ1 = Relu().activate(11)  # output: in relu
activ2 = Activations.RELU.activate(11)  # output: in activation

activ2 的输出是 'in activation',而我们想要的输出是 'in relu'。

1 个回答

暂无回答

撰写回答