关于对Python面向对象的理解

说起面向对象(Object Oriented Programming)首先想到的就是三个词:封装、继承和多态。

封装:目的是为了简化编程和提升安全性(标识出允许外部使用的所有成员函数和数据项)。

  • 属性封装
  • 方法封装

继承和多态:顾名思义,继承就是子类可以获取父类的特性,实际上就是为了更好的进行代码复用,而多态是指基于不同的父类调用同一方法也可能有不同的执行逻辑,与这个相关的还有一个有趣的名词”鸭子模型“。

另外与面向对象对应的还有个面向过程(Process Oriented)。其中的区别下面有一个通俗的解释,可以做一个参考

面向对象是相对于面向过程的,比如你要充话费,你会想,可以下个支付宝,然后绑定银行卡,然后在淘宝上买卡,自己冲,这种种过程。但是对于你女朋友就不一样了,她是面向“对象”的,她会想,谁会充话费呢?当然是你了,她就给你电话,然后你把之前的做了一遍,然后她收到到帐的短信,说了句,亲爱的。这就是面向对象!女的思维大部分是面向“对象”的!她不关心处理的细节,只关心谁可以,和结果!

来源:知乎 链接

Python中的面向对象

在python中类的创建有两种方式

  • 使用class创建

    1
    2
    3
    4
    5
    class Foo(object):
    def test(self):
    print('Gourds class')
    a1 = Foo()
    print(a1.test())
  • 使用type创建

    1
    2
    a1 = type('Foo',(object,),{'test':fun1})
    print(a1.test())

上面两种其实并没有什么不同,为的是说一下跟type相关的有一个叫metaclass的东西
创建class后
当将class对象实例化的时候,默认会先执行对象的new方法,然后执行对象的init方法

推荐