关于类和模块与导入的思考

相似性

从某个角度来讲,类和模块些许相似性。

你可以在模块中封装私有方法,都是import一个对象后调用其中方法。

在写一组接口时是应该封装成类还是模块?

ps:如果把两者看成对象来操作,模块可以实现类似类的很多功能,但不建议随意修改底层魔法方法。

区别

类的特性:继承特性,重载等

模块:类似类的单例

考虑是否是单例,是否需要重载继承。

如果是复杂的逻辑处理,还是使用类,继承,设计模式结合较为灵活。

如果是基本组件,单例,可使用模块,函数式,无状态。

注意:

对于模块中的对象,import和from import不同:

对于from a import var,实际是类似:var = a.var,如果var是传值而非引用类型的,则修改之不会影响另一个模块的值,如果是列表等则会

如果是import a,则使用a.var会影响a模块的var,无论var是字符串还是引用。

这导致如果reload,from import方式导入的将不会更新

 

posted on 2017-12-08 15:14  willaty  阅读(119)  评论(0编辑  收藏  举报

导航