python学习笔记4_类和更抽象

时间:2022-03-29 21:40:32

python学习笔记4_类和更抽象

一、对象 class

对象主要有三个特性,继承、封装、多态。python的核心。

1、多态、封装、继承

多态,就算不知道变量所引用的类型,还是可以操作对象,根据类型或对象的不同而表现出不同的行为。

python学习笔记4_类和更抽象  这是一个简单的例子,add方法,,包装了一下 + 函数。这就是多态。不管参数是什么类型,使用add方法,都可以把他们+在一起。

封装,封装式对全局作用域中其他区域隐藏多余的信息。和多态相似但是不同的概念,使用对象而不知道其细节。多态是不知道对象引用了什么类型,而使用。

继承,类可以继承其他类的属性和方法。

2、类class

类是一种对象,所有的对象都属于某一个类,称类的实例(instance)

python学习笔记4_类和更抽象     运行以后执行结果python学习笔记4_类和更抽象

2.1、特性、函数、方法

类中的方法和函数的区别在于,有没有self参数。

方法(可以称作,绑定方法)将它们的第一个参数绑定到所属的实例上,因此这个参数可以不必提供。

python学习笔记4_类和更抽象 python学习笔记4_类和更抽象可以将特性方法,绑定到普通函数上,这样就不会有特殊的seft参数了。 python学习笔记4_类和更抽象

2.2、私有化

python中不直接支持私有化。在需要的方法和特性前面加算个下划线(__)。即使加了下划线还是可以访问的,python在处理这些带双下划线的特性和方法的时候。会把双下划线翻译成_下划线和类名的形式。

python学习笔记4_类和更抽象 可以在类的内部访问python学习笔记4_类和更抽象 外部直接访问报错python学习笔记4_类和更抽象

这种方式还是可以访问私有特性和方法的 python学习笔记4_类和更抽象

2.3、类的命名空间

所有位于class中的代码都在特殊的命名空间中执行,这个命名空间就是类的命名空间(class namespace)。这个命名空间可由类中的所有成员访问。

注意:并不是所有python程序员都不知道,类内部定义的就是执行的代码块。

python学习笔记4_类和更抽象   python学习笔记4_类和更抽象python学习笔记4_类和更抽象 在该代码中,在类作用域内定义一个可供所有成员(实例)访问的变量,用来计算类的成员数量。

python学习笔记4_类和更抽象  python学习笔记4_类和更抽象 python学习笔记4_类和更抽象python学习笔记4_类和更抽象

2.4、指定超类

将其他类的名称写到class语句后面括号内可以指定超类。

python学习笔记4_类和更抽象   python学习笔记4_类和更抽象                  python学习笔记4_类和更抽象

这里的SPAMFFilter类两个特点:1,用提供新定义的方式重载了Filter类的Init方法。2.filter方法的定义是从Filter类中拿过来的(继承),所有不用重新定义。spam单词的意思是:垃圾邮件

2.5、调查基类

python学习笔记4_类和更抽象

python学习笔记4_类和更抽象

python学习笔记4_类和更抽象

python学习笔记4_类和更抽象

2.6、多重继承

一个类可以有多个基类,在class语句后面的括号里添加逗号,隔开多个。

python学习笔记4_类和更抽象这种行为称为多重继承(multiple inheritance)。

注意事项:一个方法重多个超类中继承(多个超类有相同名称但作用不同的方法)时,根据(class语句中)继承的顺序,先继承的方法会重写后继承的类中相同名称的方法。

2.7、接口和内省

“接口”的概念与多态有关。在处理多态对象时,只要关心它的接口(或称“协议”)即可---也就是公开的方法和特性。(不太理解,求指导)意思说,python没有接口,基本是多态吗?