python 复习 面向对象

面向过程编程思想:
    核心:过程
    过程指的是解决问题的具体步骤,即先干什么再干什么。
    基于该编程思想编写程序,相当于一条流水线,一种机械式的思维方式。

面向对象编程思想:
    核心:对象
    对象指的是数据与方法的结合体。相当于是一个容器。
    基于该编程思想编写程序,就像创造世界,一种上帝式的思维方式。

一 类与对象

(多个对象抽离出来的具有相似的属性和方法)
对象是特征与技能结合体,即数据(属性)与方法。
类是一系列对象相似的特征与技能的结合体,即相似的数据(属性)与方法。

二 面向对象三大特性

封装:
    把一堆数据属性与方法属性 整合 到对象里面。
    相对于以前讲的隐藏+提供接口的说法,更加的抽象了一点,但是结合着箱子的例子,
    比以前容易理解

隐藏:
    __属性 ---> 把属性变形了,即隐藏起来了!
    所谓的隐藏,本质上就是在前面加上 __类名
例子:
class A:
    def __init__(self, name):
        self.__name = name

    def dayin(self):
        print(self.__dict__)


a = A('zhangsan')
a.dayin()  # {'_A__name': 'zhangsan'}
继承:
    父类是一系列类共有的数据属性与方法属性的结合体。
    子类可以继承父类的属性,还可以派生出自己独有的属性。

多态:
    1.抽象类 :被继承,用来定义方法,但不实现,继承它的子类进行实现
    2.鸭子类型  :只要属性、方法相似,就都称为鸭子(即使不继承)

三 对象的绑定方法

    给对象用的,由对象来调用,会自动把对象本身当作第一个参数传给self。

四 classmethod、staticmethod、property

classmethod本质上是一个装饰器,装饰给类里面的方法。
被装饰的方法,即类的绑定方法。
(声明之后为类的方法)

staticmethod:声明的方法作为普通方法,类和对象都可调用

property:用作封装属性

五 组合

组合:
    1.即继承父类的属性,且不与父类耦合到一起。
    2.把一个对象放到另一个对象里面。
    组合是继承的一种应用。

六 面向对象高级

1、反射:
    通过 字符串 来操作类与对象的属性。
    就是映射关系,--> 输入cmd,通过匹配 method_map 中的方法,调用实现函数

    hasattr()
        判断对象或者类的属性是否存在!

    getattr()
        获取对象或者类的属性
        参数1: 对象
        参数2: '属性名'
        参数3: 默认值

    setattr()
        设置对象或者类的属性

    delattr()
        删除对象或者类的属性

2、类的内置方法

__init__(): 调用类的时候自动触发__init__。
__str__(): 打印对象的时候出发此方法。 (此方法内,必须return一个字符串)
__del__(): 在对象 占用空间被清掉了,会自动触发__del__方法的执行。
__setattr__(): 修改对象的属性会自动触发此方法的执行。
__deleter__: 删除属性的时候会自动触发。
__call__: 调用对象的时候会自动触发。 讲元类的时候会有用!

posted @ 2019-04-28 15:34  xt12321  阅读(151)  评论(0编辑  收藏  举报