python学习笔记4_类和更抽象
python学习笔记4_类和更抽象
一、对象 class
对象主要有三个特性,继承、封装、多态。python的核心。
1、多态、封装、继承
多态,就算不知道变量所引用的类型,还是可以操作对象,根据类型或对象的不同而表现出不同的行为。
这是一个简单的例子,add方法,,包装了一下 + 函数。这就是多态。不管参数是什么类型,使用add方法,都可以把他们+在一起。
封装,封装式对全局作用域中其他区域隐藏多余的信息。和多态相似但是不同的概念,使用对象而不知道其细节。多态是不知道对象引用了什么类型,而使用。
继承,类可以继承其他类的属性和方法。
2、类class
类是一种对象,所有的对象都属于某一个类,称类的实例(instance)
运行以后执行结果
2.1、特性、函数、方法
类中的方法和函数的区别在于,有没有self参数。
方法(可以称作,绑定方法)将它们的第一个参数绑定到所属的实例上,因此这个参数可以不必提供。
可以将特性方法,绑定到普通函数上,这样就不会有特殊的seft参数了。 
2.2、私有化
python中不直接支持私有化。在需要的方法和特性前面加算个下划线(__)。即使加了下划线还是可以访问的,python在处理这些带双下划线的特性和方法的时候。会把双下划线翻译成_下划线和类名的形式。
可以在类的内部访问
外部直接访问报错
这种方式还是可以访问私有特性和方法的 
2.3、类的命名空间
所有位于class中的代码都在特殊的命名空间中执行,这个命名空间就是类的命名空间(class namespace)。这个命名空间可由类中的所有成员访问。
注意:并不是所有python程序员都不知道,类内部定义的就是执行的代码块。

在该代码中,在类作用域内定义一个可供所有成员(实例)访问的变量,用来计算类的成员数量。


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

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




2.6、多重继承
一个类可以有多个基类,在class语句后面的括号里添加逗号,隔开多个。
这种行为称为多重继承(multiple inheritance)。
注意事项:一个方法重多个超类中继承(多个超类有相同名称但作用不同的方法)时,根据(class语句中)继承的顺序,先继承的方法会重写后继承的类中相同名称的方法。
2.7、接口和内省
“接口”的概念与多态有关。在处理多态对象时,只要关心它的接口(或称“协议”)即可---也就是公开的方法和特性。(不太理解,求指导)意思说,python没有接口,基本是多态吗?
python学习笔记4_类和更抽象的更多相关文章
- Python学习笔记 - day7 - 类
类 面向对象最重要的概念就是类(Class)和实例(Instance),比如球类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同.在Python中,定义类 ...
- Python 学习笔记 - 10.类(Class) 1
定义 Python 的 Class 比较特别,和我们习惯的静态语言类型定义有很大区别. 1. 使用一个名为 __init__ 的方法来完成初始化.2. 使用一个名为 __del__ 的方法来完成类似析 ...
- Python学习笔记:类
类可以将数据与函数封装起来,用一个例子解释,先定义一个类: class athlete: def __init__(self,a_name,a_dob=None,a_times=[]): self.n ...
- python学习笔记1-元类__metaclass__
type 其实就是元类,type 是python 背后创建所有对象的元类 python 中的类的创建规则: 假设创建Foo 这个类 class Foo(Bar): def __init__(): ...
- Python学习笔记12—类
典型的类和调用方法: #!/usr/bin/env Python # coding=utf-8 __metaclass__ = type #新式类 class Person: #创建类 def __i ...
- Python学习笔记008_类_对象_继承_组合_类相关的BIF
# 对象 = 属性 + 方法>>> # Python中的类名约定以大写字母开始>>> # tt = Turtle() 这就是创建类实例的方法,其它语言用new ,它 ...
- python学习笔记(七) 类和pygame实现打飞机游戏
python中类声明如下: class Student(object): def __init__(self, name, score): self.name = name self.score = ...
- Python 学习笔记16 类 - 导入
我们在编码的过程中,可能会给对象添加越来越多的功能,即使我们使用了继承,也不可避免的使文件越来越臃肿. 为了避免这种情况, Python允许将对象存储在模块中,并且可以在其他模块中进行导入. 其实这和 ...
- Python 学习笔记15 类 - 继承
我们在编程的过程中,并非都是要重头开始.比如其他人已经有现成的类,我们可以使用其他找人编写的类.术语称之为: 继承. 当一个类继承例外一个类时,它可以获得这个类的所有属性和方法:原有的类称之为 父类, ...
随机推荐
- Java关于读取Excel文件~xlsx xls csv txt 格式文件~持续汇总~
所需的jar百度网盘链接:https://pan.baidu.com/s/146mrCImkZVvi1CJ5KoiEhQ提取码:c329 1 需要导入jar包,缺1不可 dom4j-1.6.1.jar ...
- SqlServer中的系统数据库
SqlServer中的系统数据库有五个,平时写代码不太关注,今天一时兴起研究了一下. 1. master 记录SQL Server系统的所有系统级信息,例如:登陆账户信息.链接服务器和系统配置设置.记 ...
- Windows Server 2016-启用默认Windows搜索服务
当我们使用Windows Server 2016尝试从开始菜单或基于Windows Server 2016的计算机上的Cortana 搜索时,我们不会收到任何结果或不一致的结果. 原因 默认情况下, ...
- Iterm2/Mac自带终端工具快速进入你想进入的虚拟机教程
一.首先我们在终端本地要写一个登录的脚本,eg: 当然首先要touch login.sh 啦,下面就是脚本文件,比较low,大神勿喷,会更炫酷写法的小伙伴可以自己参考这个思路写,不会的直接复制就好啦 ...
- python3.6+selenium3.13 自动化测试项目实战一(增加自动发送邮件报告接口)
说明: 继实战项目一的基础上添加自动发送报告邮件接口,代码有部分调整,可以结合实战一和上篇文章学习 变动: 1.增加文本文档SendToUserinfo.txt 用来保存邮件接收者的信息 2.修改测试 ...
- nginx 安装、启动、重启、关闭 (linux系统命令行)
前言: 最近在部署我的hexo静态博客到腾讯云服务器上,用到了很多nginx的知识,在此做下总结: 刚接触的linux服务器上,nginx配置乱的有点令人发指,就把老的卸载了重新装一下. 1.卸载 y ...
- [Abp vNext 源码分析] - 2. 模块系统的变化
一.简要说明 本篇文章主要分析 Abp vNext 当中的模块系统,从类型构造层面上来看,Abp vNext 当中不再只是单纯的通过 AbpModuleManager 来管理其他的模块,它现在则是 I ...
- SpinnerViewPop【PopWindow样式(单选)、Dialog样式(单选+多选)的下拉菜单】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 对下拉菜单的文本区域和列表区域进行了封装.包括两种展现方式:popwindow(单选).dialog(单选+多选) 因为该封装需要在 ...
- 使用java语言,将字符串中连续重复出现的字母变成“出现次数“+字母的格式
今天在简书上看到这样一道有趣的算法题: 解题思路 首先定义一个变量element,默认是字符串的第一个字符.以element为基准元素,去判断某个字符是否重复.然后再去定义一个变量count去记录重复 ...
- 试试使用 eolinker 扫描 GitLab 代码注释自动生成 API 文档?
前言: 一般写完代码之后,还要将各类参数注解写入API文档,方便后续进行对接和测试,这个过程通常都很麻烦,如果有工具可以读取代码注释直接生成API文档的话,那会十分方便. 此前一直都是在使用eolin ...