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_类和更抽象的更多相关文章

  1. Python学习笔记 - day7 - 类

    类 面向对象最重要的概念就是类(Class)和实例(Instance),比如球类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同.在Python中,定义类 ...

  2. Python 学习笔记 - 10.类(Class) 1

    定义 Python 的 Class 比较特别,和我们习惯的静态语言类型定义有很大区别. 1. 使用一个名为 __init__ 的方法来完成初始化.2. 使用一个名为 __del__ 的方法来完成类似析 ...

  3. Python学习笔记:类

    类可以将数据与函数封装起来,用一个例子解释,先定义一个类: class athlete: def __init__(self,a_name,a_dob=None,a_times=[]): self.n ...

  4. python学习笔记1-元类__metaclass__

    type 其实就是元类,type 是python 背后创建所有对象的元类   python 中的类的创建规则: 假设创建Foo 这个类 class Foo(Bar): def __init__(): ...

  5. Python学习笔记12—类

    典型的类和调用方法: #!/usr/bin/env Python # coding=utf-8 __metaclass__ = type #新式类 class Person: #创建类 def __i ...

  6. Python学习笔记008_类_对象_继承_组合_类相关的BIF

    # 对象 = 属性 + 方法>>> # Python中的类名约定以大写字母开始>>> # tt = Turtle() 这就是创建类实例的方法,其它语言用new ,它 ...

  7. python学习笔记(七) 类和pygame实现打飞机游戏

    python中类声明如下: class Student(object): def __init__(self, name, score): self.name = name self.score = ...

  8. Python 学习笔记16 类 - 导入

    我们在编码的过程中,可能会给对象添加越来越多的功能,即使我们使用了继承,也不可避免的使文件越来越臃肿. 为了避免这种情况, Python允许将对象存储在模块中,并且可以在其他模块中进行导入. 其实这和 ...

  9. Python 学习笔记15 类 - 继承

    我们在编程的过程中,并非都是要重头开始.比如其他人已经有现成的类,我们可以使用其他找人编写的类.术语称之为: 继承. 当一个类继承例外一个类时,它可以获得这个类的所有属性和方法:原有的类称之为 父类, ...

随机推荐

  1. vba读文本如果文本文件太大会提示错误!

    Sub 文本文件太大会提示错误() Dim TT, p Open "I:\xxxxx\yyyzz.txt" For Input As #1       '读取txt文件 Do Wh ...

  2. C# 接口《通俗解释》

    接口 为什么要用接口?好处在哪里? 如果你的工作是一个修水管的,一天客户找上你让你帮装水管,但是有个要求,就是客户喜欢管子是三角形的. 你立马买了三角形的水管回来,在墙上弄个三角形的口子,客户付了钱, ...

  3. ReactNative之结合具体示例来看RN中的的Timing动画

    今天继续更新RN相关的博客.上篇博客详细的聊了RN中关于Flex布局的相关东西,具体请参见<ReactNative之参照具体示例来看RN中的FlexBox布局>.本篇博客继续更新RN的动画 ...

  4. Quartz简单实现定时任务管理(SSM+Quartz)

    首先你得有一个用Maven搭好的SSM框架,数据库用的Mysql,这里只有关于Quartz的部分.其实有大神总结的很好了,但做完后总有些地方不一样,所以写这篇作为笔记.这里先把大神的写的分享给大家:h ...

  5. Java Thread.join的作用和原理

    很多人对Thread.join的作用以及实现了解得很少,毕竟这个api我们很少使用.这篇文章仍然会结合使用及原理进行深度分析 内容导航 Thread.join的作用 Thread.join的实现原理 ...

  6. mysql安装问题(一)

    mysql安装问题 mysql安装一直未响应 问题: 原因: 解决方案: 登录mysql时提示密码错误 问题: 解决方案: mysql安装问题 Author:母虎忠 日期:April 26, 2019 ...

  7. ASP.NET Core Web API 集成测试中使用 Bearer Token

    在 ASP.NET Core Web API 集成测试一文中, 我介绍了ASP.NET Core Web API的集成测试. 在那里我使用了测试专用的Startup类, 里面的配置和开发时有一些区别, ...

  8. FileSizeUtil【获取文件夹或文件的大小】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 获取文件夹或者文件的大小,可以指定单位,也可以自动计算合适的单位值. 效果图 代码分析 常用的方法: getFolderOrFile ...

  9. SDK测试实践

    最近开始接SDK的测试项目,因为之前没有接触过,还是很新奇的,记录一下测试方法. 大家都知道SDK其实就是一个基础工具包,我的理解,对于安卓和IOS来说,SDK就是一个应用程序的基础包,在SDK的基础 ...

  10. Python:鲜为人知的功能特性(上)

    GitHub 上有一个名为<What the f*ck Python!>的项目,这个有趣的项目意在收集 Python 中那些难以理解和反人类直觉的例子以及鲜为人知的功能特性,并尝试讨论这些 ...