相似性
从某个角度来讲,类和模块些许相似性。
你可以在模块中封装私有方法,都是import一个对象后调用其中方法。
在写一组接口时是应该封装成类还是模块?
ps:如果把两者看成对象来操作,模块可以实现类似类的很多功能,但不建议随意修改底层魔法方法。
区别
类的特性:继承特性,重载等
模块:类似类的单例
考虑是否是单例,是否需要重载继承。
如果是复杂的逻辑处理,还是使用类,继承,设计模式结合较为灵活。
如果是基本组件,单例,可使用模块,函数式,无状态。
注意:
对于模块中的对象,import和from import不同:
对于from a import var,实际是类似:var = a.var,如果var是传值而非引用类型的,则修改之不会影响另一个模块的值,如果是列表等则会。
如果是import a,则使用a.var会影响a模块的var,无论var是字符串还是引用。
这导致如果reload,from import方式导入的将不会更新。