类实例中的条件方法执行

2024-10-01 22:38:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建能够优雅地处理数学错误的monad。我创造了这样的东西:

from enum import Enum

class Monad(Enum):
    Safe = 1
    Fail = 2

class DivisionMonad:
    def __init__(self, value=None, type=Monad.Safe):
        self.value = value
        self.type = type

    def __truediv__(self, val):
        if self.type == Monad.Fail:
            return DivisionMonad(type=Monad.Fail)
        try:
            return DivisionMonad(self.value / val)
        except:
            return DivisionMonad(type=Monad.Fail)

    def __repr__(self):
        return f'< {self.value} >'


d = DivisionMonad(1)
d = d / 3
print(d.value)
print(d.type)
d = d / 0
print(d.value)
print(d.type)

但我相信,通过让类根据Monad的状态使用不同的方法,这可能会更简单。有没有办法基于instance属性而不是if/else语句来创建方法的conditional执行


Tags: 方法selfreturnifvaluedeftypeval

热门问题