pyhton基础知识Chapter8

Day15 python基础知识

方法没有重载

在其他语言中,可以定义多个重名的方法,只保证方法签名唯一即可,方法签名包含:方法名、参数数量、参数类型

python中,方法的参数没有类型(调用时确定类型),参数的数量也可以由可变参数控制。因此,Python中的方法是没有重载的

若定义了多个重名的方法,只有最后一个生效

方法的动态性

python是动态语言,可以动态地给类添加新方法,或修改类已有方法。(方法、函数也是对象,一切都是对象)

私有属性和私有方法(实现封装)

python中对于类的成员没有严格的访问控制限制,有如下要点:

1.通常约定,两个下划线开头的属性是私有的(private)。其他为公共的(public)。

2.类内部可以访问私有属性(方法)

3.类外部不能直接访问私有属性(方法)

4.类外部可以通过“_类名__私有属性(方法)名”访问私有属性

@property装饰器

将一个方法调用变成“属性调用”

面向对象三大特征

封装(隐藏)

隐藏对象的属性和实现细节,之对外提供必要方法

通过“私有属性、私有方法”的方式实现,蛋python无严格访问控制符,更多依靠程序员自觉实现

继承

继承可以让子类拥有父类的特征,提高了代码的重用性。

从设计上是一种增量进化,原有父类设计不变的情况下,可以增进新的功能

多态

多态是指同一个方法调用由于对象不同会产生不同的行为

继承

“代码复用”的重要手段

如果一个新类继承自一个已经设计好的类,就直接具备了已有类的特征,大大降低了工作难度,成为“父类”或者“基类”,新的类,我们成为“子类”或“派生类”

python支持多重继承,一个子类可以继承多个父类,语法格式如下:

class 子类类名(父类1[,父类2,...]):
    类体

如果类定义重没有指定父类,则默认父类是object类(默认所有类的父类)可以使用对应默认方法

定义子类时,须调用父类的构造函数(逻辑上必须,不是语法上必须)

Day 16python基础知识

类成员的继承和重写

1.成员继承:子类继承了父类除构造方法外的所有成员。

2.方法重写:子类可以重新定义父类中的方法,这样就会覆盖父类中的方法,称为重写

查看类的继承层次结构

通过类的方法 mro() 或类的属性 _mro__ 可以输出这个类的层次结构

Object根类

object类是所有类的父类

方法也是属性,只不过可以通过()来调用

重写_str__ 方法

_str__()重写方法

多重继承

python支持多重继承,一个子类可以有多个“直接父类”,这样就具备了多个父类的特点,但由于这样会被“类的整体层次“搞得异常复杂,尽量避免使用

MRO()

允许多重调用的情况下,如果父类中有相同名字的方法,在子类没有指定父类名时,解释器将”从左到右“按顺序搜索

先调用哪个就执行哪个里的方法

MRO:Method Resolution Order,方法解析顺序,可以通过mro()方法获得层次结构,同样也是按照层次结构寻找解析顺序的

super()获取父类的定义

在子类中如果想要获取父类的方法,可以通过super()

注意获得的是父类的定义,而不是对象

多态

同一个方法调用由于对象不同产生不同的行为

注意:多态是方法的多态,属性没有多态

多态有两个必要条件:继承、方法重写

特殊方法和运算符重载

python 运算符其实是通过调用对象的特殊方法实现的,如

a=20
b=30
c=a+b(__add__)

特殊属性

对象的浅拷贝和深拷贝

浅拷贝:拷贝对象本身

深拷贝:递归拷贝对象中包含的子对象

组合

"is-a"关系,我们可以使用”继承“实现子类拥有父类的方法和属性。Dog is a animal,所以狗类应该继承动物类

”has-a"关系,我们可以使用“组合”,也能实现一个类拥有另一个类的方法和属性。MobilePhone has CPU,所以手机拥有CPU的方法和属性

设计模式——工厂模式实现

两种常用模式:工厂模式和单例模式

工厂模式实现了创建者和调用者的分离,使用专门的工厂类将选择实现类、创建对象进行统一管理和控制。

设计模式——单例模式实现

确保一个类只有一个实例,并且提供一哥访问该实例的全局访问点

单例模式只生成一个实例对象,减少开销,提高性能

上一篇:Python基础之入门


下一篇:numpy(pyhton中的数组)基本操作