说起面向对象(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__方法

推荐