python是一门动态强类型语言: 弱类型体现在传参的时候不用指定数据类型, 强类型体现在比如 2+"str"会报数据类型错误 python不崇尚根据继承所得来的相似,比如tuple和list的方法已经非常相似了,却还是各自独立的方法这就是python崇尚的鸭子类型,优点是松耦合。 三种编程模式:面向过程编程、面向函数编程、面向对象编程面向对象设计模式:优点是解决了程序的可扩展性,缺点是可控性差面向对象的三大特性:继承、多态、封装 类中的静态变量可以被类和对象调用类变量中对于不可变数据类型最好用类名操作,而不用对象操作如果用对象操作: 类变量中如果是不可变数据类型,重新赋值是独立的, 类变量中如果是可变数据类型,修改值是共享的 当对象去调用方法的时候,就是把这个对象的值传递给这个方法了导入一个模块的时候就像是实例化了一个对象,会调用这个模块的__init__方法 组合:一个对象的属性值是另外一个类的对象 继承: 子类.__bases__可以查看父类名字 父类中没有,在子类中出现的属性叫做派生属性 父类中没有,在子类中出现的方法叫做派生方法 子类的对象调用: 只要是子类中有的名字一定先用子类的,子类中没有才用父类的,父类中也没有就报错 如果子类父类都有,优先使用子类的,如果还想用父类的,就得再单独调用父类的 super()方法的使用: 不是单独的找父类,而是根据继承顺序以广度优先来找的 class Base(object): def __init__(self, name, age): self.name = name self.age = age class temp(Base): def __init__(self, name, age, sex): super().__init__(name, age) self.sex = sex 新式类的继承顺序都是广度优先经典类的继承顺序都是深度优先mro(): 查看一个类的父类继承顺序 多态: python天生支持多态 class Alipay: def pay(self, money): print("用支付宝支付了{}元".format(money)) class Wepay: def pay(self, money): print("用微信支付了{}元".format(money)) a = Alipay() w = Wepay() def pay(pay_obj, money): pay_obj.pay(money) pay(a, 200) pay(w, 30) 上面的例子可以看出,调用pay方法的时候 如果是java强类型语言, 必须再创造一个类,让Alipay和Wepay都继承, 而在python中就不用,而是可以直接传Alipay类或者Wepay类 封装: 在类内部可以创造私有静态属性、私有属性、私有方法、 私有静态属性、私有属性、私有方法 只能在类内部使用 如果在类外部调用私有,通过 _类名__私有属性 调用
原文地址:https://www.cnblogs.com/QimiSun/p/10034356.html
时间: 2024-10-10 20:34:56