# 对于Functor的解释

## Functor 文件夹作用

Functor文件夹用于存放所有功能性的类，包括VAD、PUNC、ASR、SPK等。

## Functor 类的定义

所有类应继承于 **基类** `BaseFunctor` ，应遵从 *压入数据* 与 *数据处理* 解绑。

为了方便使用，我们对于 **基类** 的定义如下：

1. 函数内部使用的变量以单下划线开头，预定有 `_data`, `_callback`, `_model`等

2. 对于使用的模型，请从统一的 **模型管理类`ModelLoader`** 中获取，由模型管理类统一进行加载、缓存和释放，`_model`存放类型为`dict`。

3. 定义了
    
    `__call__`：可传入`data`，默认调用`push_data`，随后默认调用`process`
    
    `__add__`

```python
class BaseFunctor:
    def __init__(self):
        self._data: dict = {}
        self._callback: function = null
        pass

    def __call__(self, data):
        result = 
        self._callback(process(data))
        return self.process(data)

    def set_callback(self, callback: Callable):
        self._callback = callback

    def push_data():
        pass

    def process(self, data):
        pass
```