面向对象 下

1、

要点分析:
        a、封装,对象中嵌套对象
        b、pickle,load
            实例:s1.py (dump)  s2.py(load)  类不存在(load会报错)  切记:一定要先导入相关类
                class Foo:
                    def __init__(self,name)
作业分析

2、三大特性:

    封装、继承、多态(补充):多种形态 多种类型

def func(arg):  (arg的形式 支持字典 字符串 列表 元组等)这就是多态
                print(arg)
                func(1)
                func('alex')
                func([11,22,33])
            c#/Java
                def func(int arg):
                #def func(A arg):  利用类的继承关系实现多态 arg参数必须是A类或者A的子类类型
                    print(arg)
                func(123)
                func('alex') #报错
多态

  

3、面向对象中  类成员

1、字段:
        静态字段:静态字段在代码加载时已经创建
        普通字段:  
        s3.py   中self.name为字段  保存在对象中 每个对象存在一份 (普通/动态 字段) 
                  CC为字段   保存在类中  所有对象共用一份(静态字段)  内存占用率低
                  4.jpg
                  实例:s3.py
2、方法:
        所有方法属于类
        a、普通方法:  至少一个self  通过对象执行
            s3.py  (普通方法)show方法(方法属于类)
        b、静态方法:  任意参数  类执行
            对象调用执行  s3.py  (普通方法)show方法(方法属于类)
                            普通方法 变为(静态方法) F1方法: 静态方法由类调用执行
                                1、去掉self
                                2、方法上面加@staticmethod
        c、类方法: 至少有一个cls 由类执行
            普通方法 变为(类方法) F2方法: 类方法由类调用执行
                                1、去掉self
                                2、方法上面加@classmethod
                                3、必须有一个cls参数(class缩写)
                                   cls参数自行传值无需赋值    
 3、属性
        不伦不类的东西
        具有方法的写作形式,具有字段的访问形式
           s3.py   f3方法  Pager类(分页)
                   all_pager  上面加装饰器@property
类成员

  

  

  属性:

    

    

    

    

4、成员修饰符  foo类

  私有:
    只能类自己本身成员内部可以访问(继承都不可以)

    
  共有:
    都可以访问
  特殊情况:不到万不得已不使用在外部强制访问私有成员 _类名__xxx (xxx代表字段或者方法或属性)

5、特殊成员  (s5.py  Foo类)

  __del__ 析构方法(用不到)
  __init__ 构造方法
  __doc__ 注释
  __module__ 模块位置
  __class__ 类
  __call__ 对象后面括号执行__call__方法

  __str__ 类中含有__str__的话 本该返回对象的会返回__str__的值(画面友好) s5.py foo类

 

      
  __dict__ 获取对象中封装的数据(特别特别特别重要) 直接访问 对象.__dict__
  __getitem__ 支持字典的中括号 s5.py
          切片也使用__setitem__方法

      

  __setitem__ 支持字典的中括号 s5.py
          切片也使用__setitem__方法
  __delitem__ 支持字典的中括号 s5.py
         切片也使用__setitem__方法

      
  __iter__ 循坏对象就执行__iter__ (迭代器) s5.py

    

6、面向对象其他

  isinnstance 对象是否为类(或其父类)的实例 s6.py
  issubclass 前者是否为后者的子类

    
  继承: 2.7
    super() #主动执行父类的f1方法

      
  应用:
    字典:有序字典

      
    自定义类型,对字典进行补充(有序字典)

8、单例模式(设计模式)

  单(个实)例模式:用来创建单个实例

    

    

posted @ 2016-06-29 16:06  6随6心6  阅读(102)  评论(0编辑  收藏  举报