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 = name 15 self.price = price 16 self.period =period 17 python = Course("python",19800,"6 mouths") 18 class Classes: 19 def __init__(self,name,course): 20 self.name = name 21 self.course = course 22 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.setter 45 @staticmethod *** 非要吧一个函数改成面向对象用的 46 @classmethod ***** 当一个方法只使用了类的静态变量时,就给这个方法加这个,默认传cls参数 47 使用场景比如修改私有的静态属性方法