Python入门到精通三天速成第二讲——类与继承
子类扩展了超类(父类)的定义。要指定超类,可在 class 语句中的类名后加上超类名,并将其用圆括号括起。
class Filter:def init(self):self.blocked = []def filter(self, sequence):return [x for x in sequence if x not in self.blocked]class SPAMFilter(Filter): # SPAMFilter是Filter的子类def init(self): # 重写超类Filter的方法initself.blocked = ['SPAM']
Filter 是一个过滤序列的通用类。实际上,它不会过滤掉任何东西。
>>> f = Filter()
>>> f.init()
>>> f.filter([1, 2, 3])
[1, 2, 3]
Filter 类的用途在于可用作其他类(如将 'SPAM' 从序列中过滤掉的 SPAMFilter 类)的基类(超类)。
>>> s = SPAMFilter()
>>> s.init()
>>> s.filter(['SPAM', 'SPAM', 'SPAM', 'SPAM', 'eggs', 'bacon', 'SPAM'])
['eggs', 'bacon']
请注意 SPAMFilter 类的定义中有两个要点。
以提供新定义的方式重写了 Filter 类中方法 init 的定义。
直接从 Filter 类继承了方法 filter 的定义,因此无需重新编写其定义。
第二点说明了继承很有用的原因:可以创建大量不同的过滤器类,它们都从 Filter 类派生而来,并且都使用已编写好的方法 filter 。这就是懒惰的好处。
要确定一个类是否是另一个类的子类,可使用内置方法 issubclass 。
>>> issubclass(SPAMFilter, Filter)
True
>>> issubclass(Filter, SPAMFilter)
False
如果你有一个类,并想知道它的基类,可访问其特殊属性 __bases__ 。
>>> SPAMFilter.__bases__
(<class __main__.Filter at 0x171e40>,)
>>> Filter.__bases__
(<class 'object'>,)
同样,要确定对象是否是特定类的实例,可使用 isinstance 。
>>> s = SPAMFilter()
>>> isinstance(s, SPAMFilter)
True
>>> isinstance(s, Filter)
True
>>> isinstance(s, str)
False
如你所见, s 是 SPAMFilter 类的(直接)实例,但它也是 Filter 类的间接实例,因为 SPAMFilter是 Filter 的子类。换而言之,所有 SPAMFilter 对象都是 Filter 对象。从前一个示例可知, isinstance也可用于类型,如字符串类型( str )。
如果你要获悉对象属于哪个类,可使用属性 __class__ 。
>>> s.__class__
<class __main__.SPAMFilter at 0x1707c0>
Python入门到精通三天速成第二讲——类与继承相关推荐
- Python入门到精通三天速成第一讲——创建自定义类
class Person:def set_name(self, name):self.name = namedef get_name(self):return self.namedef greet(s ...
- Python入门到精通三天速成第三讲——多重继承
前一讲,你肯定注意到了一个有点奇怪的细节:复数形式的 __bases__ .前面说过,你可使用它来获悉类的基类,而基类可能有多个.为说明如何继承多个类,下面来创建几个类. class Calculat ...
- visual studio 2015 搭建python开发环境,python入门到精通[三]
在上一篇博客Windows搭建python开发环境,python入门到精通[一]很多园友提到希望使用visual studio 2013/visual studio 2015 python做demo, ...
- python教程吾爱破解_2020年最新python入门到精通教程
2020年最新python入门到精通教程 资源共享吧良心论坛,一直用心为每位会员服务,希望大家能学有所成,今天为大家分享一套2020年最新python入门到精通教程,如果你是0基础想学习python这 ...
- python语法基础语法_Python基本语法[二],python入门到精通[四]
在上一篇博客Python基本语法,python入门到精通[二]已经为大家简单介绍了一下python的基本语法,上一篇博客的基本语法只是一个预览版的,目的是让大家对python的基本语法有个大概的了解. ...
- python入门容易精通难_我珍藏的一些好的Python代码,技巧
最近后台关注的粉丝越来越多,大部分其实还是偏入门和基础!很多小伙伴加了菜鸟学Python小助手的微信,有一些在问一些入门的问题,有一些在问如何学习Python. 其实Python是入门容易精通难,大家 ...
- 《Python入门到精通》文件操作
「作者主页」:士别三日wyx 此文章已录入专栏<Python入门到精通> 2021最新版Python小白教程,针对0基础小白和基础薄弱的伙伴学习 文件操作 1. 打开文件 1.1 ...
- 《Python入门到精通》Python基础语法
「作者主页」:士别三日wyx 此文章已录入专栏<Python入门到精通> 2021最新版Python小白教程,针对0基础小白和基础薄弱的伙伴学习 Python基础语法 1. Hel ...
- python编程入门课 视频-Python入门到精通视频教程下载[21课程全]
Python入门到精通视频教程 初级共21节课 python编程入门,针对0基础就python语言基础语法的各个点逐步讲解,由浅入深,通俗易懂,层层深入.提取码: python编程入门,针对0基础就p ...
最新文章
- JQuery制作的toolTip,针对图片预览效果
- linux 进程的作用,linux的几个进程的作用
- php 删除指定html标签,总结php删除html标签和标签内的内容的方法
- 记录两段经典标定代码
- Extreme交换机基础配置命令
- python入门导引
- 1.QT中的容器QVector,QList,QSet,QMap,QQueue,QStack,QMultiMap,QSingleList等
- springAMQP
- Eclipse Debugger Error - Web Launch Already running的处理方法
- 重启模块与及关开邮件存储设置功能页面-PHP-shell-py
- python3.8爬虫_python爬虫系列(3.8-正则的使用)
- web前端期末大作业--奥迪RS汽车主题官网设计(HTML+CSS+JavaScript)实现
- 模拟退火算法_Matlab 二维模拟退火算法最优路径(主程序)
- python 邮箱验证_在Django中进行用户注册和邮箱验证的方法
- SMOTE过采样算法
- ES-07-ElasticSearch常用插件
- 联想G460笔记本触摸板驱动 For Windows 7 x64
- 团队管理5 | 管理风格
- keycloak 验证 token
- 区块链系统:点对点交易原理
热门文章
- 以太坊上已有十个DeFi协议的锁仓量超过10亿美元
- BTC 5分钟内跌幅1.05%,现价28531.78usdt
- SAP License:未分配差异的另类查询办法
- Request介绍及演示样例 PART1
- xor和路径(codevs 2412)
- Error:java: Compilation failed: internal java compiler error
- SQL SERVER数据类型与C#数据类型对照表
- 用正则表达式输出rdf文档的三元组格式数据
- 排序算法汇总(C/C++实现)
- c#不可忍受之慢——谁是罪魁祸首