1 上周内容回顾 2 初始面向对象 3 class 类名(父类1,父类2): 4 静态属性 = "" # 静态属性,类方法 5 def __init__(self): # 初始化方法 6 7 def func(self): pass # 动态属性,方法 8 对象.类名 # 实例化,找init里面要对应 9 对象.方法名()10 对象.属性名11 组合 什么有什么,一个类的属性是另一个类的对象 # *****12 class Course:13 def __init__(self,name,price,period):14 self.name = name15 self.price = price16 self.period =period17 python = Course("python",19800,"6 mouths")18 class Classes:19 def __init__(self,name,course):20 self.name = name21 self.course = course22 pys9 = Classes("python_s9",python)23 print(pys9.course.name)24 命名空间,类和对象分别存在不同的明明看空间,类永远不能调用对象,对象可以在找不到自己空间内的名字的时候去找类的25 面向对象的三大特性,继承多态封装26 单继承 # ****27 父类(超类,基类)28 子类(派生类):派生方法,派生属性29 子类的对象调用的时候先调自己,自己没有才用父类30 多继承 (面试) # *** 一般来说不会超过三个父类,不要超过三层31 子类自己用就用自己的,如果没有就用离子类最近的那个父类的里面的方法32 抽象类,接口类 # ** ,不是很重要主要是作为java对比 # ***** 面试必考33 经典类,深度优先34 新式类,广度优先35 super 只能在python3中使用,根据mro广度优先顺序找上个类,并非单纯的找父类 # ****36 多态 # *** 面试的时候会被问到,主要记忆鸭子类型以及和java的对照区别37 鸭子类型,两个类里面有同名方法,比如list 和touple里面很多的方法但是也不需要非要划分在一个父类里面38 封装39 私有 __名字 ,在内的内部调用,外部是无法调用的 # **40 属性41 方法42 静态方法43 三个装饰器:44 @property **** 规范,面试 @name.setter45 @staticmethod *** 非要吧一个函数改成面向对象用的46 @classmethod ***** 当一个方法只使用了类的静态变量时,就给这个方法加这个,默认传cls参数47 使用场景比如修改私有的静态属性方法