我想创建能够优雅地处理数学错误的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
执行
目前没有回答
相关问题 更多 >
编程相关推荐