from cppy.cp_util import *

# 如果有连续的对数据加工操作，而且总是把共同加工数据对象当第一个参数，可以用本文件夹方法提升阅读体验

# 框架类
class FunBind:
    def bind(self, func,*args, **kwargs):
        try:
            self.data = func(self.data,*args, **kwargs)
        except:
            self.data = func(*args, **kwargs)
        return self    


data = FunBind()\
    .bind(extract_file_words,testfilepath)\
    .bind(get_frequencies)\
    .bind(sort_dict)\
    .bind(print_word_freqs,10)\
    .data
print(data)

'''
函数是自由函数,还是正常的函数写法
使用，
  - 列举函数名，首部参数外的其它参数
  - 调用 data 得到最后数据
'''