子类扩展了超类(父类)的定义。要指定超类,可在 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入门到精通三天速成第二讲——类与继承相关推荐

  1. Python入门到精通三天速成第一讲——创建自定义类

    class Person:def set_name(self, name):self.name = namedef get_name(self):return self.namedef greet(s ...

  2. Python入门到精通三天速成第三讲——多重继承

    前一讲,你肯定注意到了一个有点奇怪的细节:复数形式的 __bases__ .前面说过,你可使用它来获悉类的基类,而基类可能有多个.为说明如何继承多个类,下面来创建几个类. class Calculat ...

  3. visual studio 2015 搭建python开发环境,python入门到精通[三]

    在上一篇博客Windows搭建python开发环境,python入门到精通[一]很多园友提到希望使用visual studio 2013/visual studio 2015 python做demo, ...

  4. python教程吾爱破解_2020年最新python入门到精通教程

    2020年最新python入门到精通教程 资源共享吧良心论坛,一直用心为每位会员服务,希望大家能学有所成,今天为大家分享一套2020年最新python入门到精通教程,如果你是0基础想学习python这 ...

  5. python语法基础语法_Python基本语法[二],python入门到精通[四]

    在上一篇博客Python基本语法,python入门到精通[二]已经为大家简单介绍了一下python的基本语法,上一篇博客的基本语法只是一个预览版的,目的是让大家对python的基本语法有个大概的了解. ...

  6. python入门容易精通难_我珍藏的一些好的Python代码,技巧

    最近后台关注的粉丝越来越多,大部分其实还是偏入门和基础!很多小伙伴加了菜鸟学Python小助手的微信,有一些在问一些入门的问题,有一些在问如何学习Python. 其实Python是入门容易精通难,大家 ...

  7. 《Python入门到精通》文件操作

    「作者主页」:士别三日wyx   此文章已录入专栏<Python入门到精通>   2021最新版Python小白教程,针对0基础小白和基础薄弱的伙伴学习 文件操作 1. 打开文件 1.1 ...

  8. 《Python入门到精通》Python基础语法

    「作者主页」:士别三日wyx   此文章已录入专栏<Python入门到精通>   2021最新版Python小白教程,针对0基础小白和基础薄弱的伙伴学习 Python基础语法 1. Hel ...

  9. python编程入门课 视频-Python入门到精通视频教程下载[21课程全]

    Python入门到精通视频教程 初级共21节课 python编程入门,针对0基础就python语言基础语法的各个点逐步讲解,由浅入深,通俗易懂,层层深入.提取码: python编程入门,针对0基础就p ...

最新文章

  1. JQuery制作的toolTip,针对图片预览效果
  2. linux 进程的作用,linux的几个进程的作用
  3. php 删除指定html标签,总结php删除html标签和标签内的内容的方法
  4. 记录两段经典标定代码
  5. Extreme交换机基础配置命令
  6. python入门导引
  7. 1.QT中的容器QVector,QList,QSet,QMap,QQueue,QStack,QMultiMap,QSingleList等
  8. springAMQP
  9. Eclipse Debugger Error - Web Launch Already running的处理方法
  10. 重启模块与及关开邮件存储设置功能页面-PHP-shell-py
  11. python3.8爬虫_python爬虫系列(3.8-正则的使用)
  12. web前端期末大作业--奥迪RS汽车主题官网设计(HTML+CSS+JavaScript)实现
  13. 模拟退火算法_Matlab 二维模拟退火算法最优路径(主程序)
  14. python 邮箱验证_在Django中进行用户注册和邮箱验证的方法
  15. SMOTE过采样算法
  16. ES-07-ElasticSearch常用插件
  17. 联想G460笔记本触摸板驱动 For Windows 7 x64
  18. 团队管理5 | 管理风格
  19. keycloak 验证 token
  20. 区块链系统:点对点交易原理

热门文章

  1. 以太坊上已有十个DeFi协议的锁仓量超过10亿美元
  2. BTC 5分钟内跌幅1.05%,现价28531.78usdt
  3. SAP License:未分配差异的另类查询办法
  4. Request介绍及演示样例 PART1
  5. xor和路径(codevs 2412)
  6. Error:java: Compilation failed: internal java compiler error
  7. SQL SERVER数据类型与C#数据类型对照表
  8. 用正则表达式输出rdf文档的三元组格式数据
  9. 排序算法汇总(C/C++实现)
  10. c#不可忍受之慢——谁是罪魁祸首