一、10个python9个不会oop8个从不用oop,大部分还是面向过程编程,一个功能用一个方法平铺到底,好点的话抽出几个公共方法,再进一步加个class包装成类,我最近就看过一些这样的类,写的貌合神离,貌像面向对象,但神是面向过程,这种类当然是十分的没必要,这种写法除了在长篇幅的模块文件中割裂出更小命名空间,使各部分功能紧凑一点以外,因为没有体现出面向对象带来的任何优点,也没任何意义了,直接在这种写法方式的面向过程的代码的基础上,执行这三步加个class关键字,只不过是脱了裤子放屁,在一些有五六年开发经验的老手看来,会觉得写这个python类是在强行装逼,代码有点滑稽。有人问是不是代码里面多写class关键字就是面向对象了?大错特错,面向对象oop和代码有没有class没有必然关系,他是一种思维思想不是语法形式,举例一个使用大家公认的强制面向对象的语言java语言来用面向过程的思维写代码的例子,如果也按这种写法写python的类,这种就是属于无效装逼类。

    二、python面向对象(oop)四步走
    1、如果你的代码已经是按照我的那个人 的那个类那种全局变量加函数的写法可以跳过这一步。如果是第2种情况完全一环套一环的在每个函数节点里面return加传参的写法,那么先需要执行下面这段话。
    在你的脑瓜里面构思,你的面向过程的return 传参,有哪些尽可能多的是可以弄成全局变量的,这时候不用考虑全局变量是不是需要多份的,因为后面在三步走命名空间降级的时候,这个玩意自动变成了实例属性,而每个类的多个实例的的属性都是互不干扰的,除非了你刻意写了单例模式。
    2、模块级降为类
    3、全局变量改成实例属性,全局的不会被改变的变量类似于那种const的,可以写成类属性(减少点内存存储可以)。什么时候需要类属性什么时候需要实例属性,酌情考虑。
    4、然后把函数改成方法。方法是类里面的,函数是模块里面的。
    面向对象本质是方法和属性的封装,如果不允许写任何一个实例属性,把所有属性绑定全部改为外界传参给方法,所有原来保存中间状态的实例属性全部return给外界保存,那写这样的类,基本上是没个鸟用,废了面向对象的80%功能优点,只不过是加个class外壳罢了

    三、虽然网上都说面向过程转面向对象很难,要靠领悟和实践,没有捷径可走。但完成基本的面向对象转变,可以按照这个公式,严格执行四步走战略。其余的就是多实践多对比领悟摸索,想玩的精妙需要学习23种设计模式。