1.class decorator

# 這是一個不需要傳入參數的 class decorator,在 __init__ 初始化函數必須傳入函數物件
class myDecorator:
    def __init__(self, func):
        print("inside myDecorator.__init__()")
        self.func = func

    def __call__(self):
        self.func()
        print("inside myDecorator.__call__()")

# 這是一個可以傳入參數的 class decorator
# 這是一個自定義的 json 序列化 class decorator
# __init__ 初始化函數,可傳入 decorator 的參數
# __call__ 函數需要傳入函數物件
class CustomizedJsonSerializer:
    def __init__(self, serializeType):
        self._serializeType = serializeType

    def __call__(self, func):
        def wrapper(*args, **kwargs):
            res = func(*args, **kwargs)
            serializer = lambda x: x.__str__() if isinstance(x, self._serializeType) else None
            serializedData = json.dumps(res, default=serializer)
            return serializedData
        return wrapper

results matching ""

    No results matching ""