面向对象

    1. 初识面向对象
        面向过程:
            一切以事务的发展流程为中心.
        面向对象:
            一切以对象为中心. 一切皆为对象. 具体的某一个事务就是对象
        打比方:
            大象进冰箱
                步骤: 第一步, 开门, 第二步, 装大象, 第三步, 关门
                面向对象:大象, 你进冰箱.
                    此时主语是大象. 我操纵的是大象. 此时的大象就是对象
    2. 类. 对象
        类: 就是图纸. 创建对象的第一步. 先画图纸. 先写类.
        对象: 对象就是车. 通过图纸造出来的具体的东西. 通过类来创建对象
        类与对象的关系:
            类是对xxx事物的归类.
                写:
                    __init__(self, 参数)  参数一般作为属性设置给对象. 对象就是self, 对属性的封装.
                    def 方法(self, 参数): 方法. 第一个参数一般是固定的self. 当前类的对象.
                        pass
            对象是xx类型的一个具体
                创建对象: 类名()
        创建类:
        class 类名:
            def __init__(self): # 初始化方法. 又被成为构造方法
                self.属性 = 值
                self.属性 = 值
                self.属性 = 值
            def fangfa(self):
                方法体(函数体,  return)
        创建对象:
            变量 = 类名() # 实例化 <-> 创建对象
            变量.属性 # 访问对象的属性信息
            变量.方法() # 访问类中的方法
    3. 面向对象和面向过程的对比
        如果写一些比较小的程序用面向过程.
        程序很复杂. 很庞大建议用面向对象.
    4. 面向对象的三大特征
        封装:
            1. 对属性的封装(__init__())
                self.xxx = xxx
            2. 对方法和功能的封装
        继承
            子类自动拥有父类中除了私有内容外的其他所有内容
            class Bar(Foo):  Bar对Foo进行了扩展
                pass
            当出现x是一种y的时候. 推荐使用继承关系
            python支持多继承. 查找顺序: 先找离他近的.
        多态(python原生直接就是多态)
    1. 初识面向对象
        面向过程:
            一切以事务的发展流程为中心.
        面向对象:
            一切以对象为中心. 一切皆为对象. 具体的某一个事务就是对象
        打比方:
            大象进冰箱
                步骤: 第一步, 开门, 第二步, 装大象, 第三步, 关门
                面向对象:大象, 你进冰箱.
                    此时主语是大象. 我操纵的是大象. 此时的大象就是对象
    2. 类. 对象
        类: 就是图纸. 创建对象的第一步. 先画图纸. 先写类.
        对象: 对象就是车. 通过图纸造出来的具体的东西. 通过类来创建对象
        类与对象的关系:
            类是对xxx事物的归类.
                写:
                    __init__(self, 参数)  参数一般作为属性设置给对象. 对象就是self, 对属性的封装.
                    def 方法(self, 参数): 方法. 第一个参数一般是固定的self. 当前类的对象.
                        pass
            对象是xx类型的一个具体
                创建对象: 类名()
        创建类:
        class 类名:
            def __init__(self): # 初始化方法. 又被成为构造方法
                self.属性 = 值
                self.属性 = 值
                self.属性 = 值
            def fangfa(self):
                方法体(函数体,  return)
        创建对象:
            变量 = 类名() # 实例化 <-> 创建对象
            变量.属性 # 访问对象的属性信息
            变量.方法() # 访问类中的方法
    3. 面向对象和面向过程的对比
        如果写一些比较小的程序用面向过程.
        程序很复杂. 很庞大建议用面向对象.
    4. 面向对象的三大特征
        封装:
            1. 对属性的封装(__init__())
                self.xxx = xxx
            2. 对方法和功能的封装
        继承
            子类自动拥有父类中除了私有内容外的其他所有内容
            class Bar(Foo):  Bar对Foo进行了扩展
                pass
            当出现x是一种y的时候. 推荐使用继承关系
            python支持多继承. 查找顺序: 先找离他近的.
        多态(python原生直接就是多态)
1. 成员
        在类中你能写的所有内容都是类的成员
    2. 变量
        1. 实例变量: 昨天写的就是实力变量, 由对象去访问的变量.
        2. 类变量. 此时. 这个变量属于类. 但是对象也可以访问.
    3. 方法
        1. 实例方法: 昨天写的就是实例方法. 使用    对象.方法()
            特点: 在声明的时候. 需要给出self, self必须放在第一个位置
                  在调用的时候. 自动的会把对象传递给形参的self
        2. 类方法(@classmethod): 类方法是属于类的.
            特点:在声明的时候需要给出一个能够接受类名的参数, cls , 也必须放在参数的第一个
                 在调用的时候. 自动得把xx对象的类传递给cls
        3. 静态方法(@staticmethod): 静态方法也是属于类的. 静态方法就好比. 我们在类中定义了一个函数
            静态方法一般和类方法差不多. 使用类名去访问
    4. 属性
        在方法上添加一个@property. 可以把一个方法变成一个属性. 但是这个属性不可以被赋值
        当我们某一个属性必须经过计算才能得到结果的时候.
    5. 私有
        所有以双下划线开头的方法, 变量都是私有内容. 外界无法访问. 除非你主动暴露这些内容
 类与类之间的关系
        在我们的世界中事物和事物之间总会有一些联系.
        在面向对象中. 类和类之间也可以产生相关的关系
        1. 依赖关系
            执行某个动作的时候. 需要xxx来帮助你完成这个操作. 此时的关系是最轻的.
            随时可以更换另外一个东西来完成此操作
        2. 关联关系
            在对象里面埋对象
            self.girlFriend = girl
            1. 一对一关系
                你和你的女朋友
            self.teach_list = [t1,t2,t3]
            2. 一对多关系
                 一个学校. 一堆老师

        类中的关系: 依赖关系是最轻的. 最重的是继承关系. 关联关系是比较微妙的.
    self到底是谁?
        self:谁调用的就是谁. 类型是根据调用方的对象来进行变换的
        super:表示的是父类
    特殊成员:
        __init__() # 创建对象的时候初始化操作
        __call__() # 对象()
        __getitem__() # 对象[哈哈]
        __setitem__() # 对象[哈哈] = 值
        __new__() # 创建对象的时候.开辟内存
        __enter__() # with 对象
        __exit__() #结束with的时候
        __hash__() # 可哈希 hash()
原文地址:https://www.cnblogs.com/liuzhiqiang666/p/10133675.html