Я новичок в идеях декораторов (и все еще пытаюсь обернуть их вокруг себя), но я думаю, что столкнулся с проблемой, которая была бы хорошо для них. Я хотел бы иметь класс, который украшен для всех функций в математической библиотеке. Точнее, в моем классе два члена: x и flag . Когда flag true, я бы хотел, чтобы исходная математическая функция была вызвана. Когда flag имеет значение false, я хотел бы вернуть None .
В качестве основы для того, что я спрашиваю здесь, является класс:
import math
class num(object):
def __init__(self, x, flag):
self.x = x
self.flag = flag
def __float__(self):
return float(self.x)
В результате все отлично работает:
a = num(3, True)
print math.sqrt(a)
Однако это должно (в моем идеальном мире) вернуть Нет :
b = num(4, False)
print math.sqrt(b)
Какие-либо предложения или советы о том, как это можно применить ко всей библиотеке функций?