Python 类实例中的条件方法执行

Python 类实例中的条件方法执行,python,functional-programming,monads,Python,Functional Programming,Monads,我想创建能够优雅地处理数学错误的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__(s

我想创建能够优雅地处理数学错误的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)
从枚举导入枚举
类单子(枚举):
安全=1
失败=2
类别:单子:
def uuu init uuuu(self,value=None,type=Monad.Safe):
自我价值=价值
self.type=type
def _uTrueDiv _;(自,val):
如果self.type==Monad.Fail:
返回Monad(type=Monad.Fail)
尝试:
返回分区monad(self.value/val)
除:
返回Monad(type=Monad.Fail)
定义报告(自我):
返回f'<{self.value}>'
d=d(1)
d=d/3
打印(d值)
打印(d.type)
d=d/0
打印(d值)
打印(d.type)

但我相信,通过让类根据Monad的状态使用不同的方法,这可能会更简单。除了
if/else
语句之外,是否有一种方法可以基于
实例
属性创建
有条件的
方法执行?

这不是monad。它只是一个完成了一项任务的类,monads可以用来完成这项任务。这是一个公平的观点,我只是试图模仿这种行为。至少,
\uuuuuu truediv\uuuu
仍然应该返回一个
DivisionMonad
,而不管其参数的状态如何。这是一个很好的观点,我将更新hould
DivisionMonad
实例是否更改其自身的状态?如果是,您可以使用。否则最好用不同的行为编写两个不同的类。这不是monad。它只是一个完成了一项任务的类,monads可以用来完成这项任务。这是一个公平的观点,我只是试图模仿这种行为。至少,
\uuuuuu truediv\uuuu
仍然应该返回一个
DivisionMonad
,而不管其参数的状态如何。这是一个很好的观点,我将更新hould
DivisionMonad
实例是否更改其自身的状态?如果是,您可以使用。否则,最好编写两个具有不同行为的不同类。