注意区分当前的 Python 版本是 2.X 还是 3.X,Python 3.X 在 super 的使用上较之 Python 2.X 有较大的变化;

1. Python 2.x

class Contact(object):all_contacts = []def __init__(self, name, email):self.name = nameself.email = emailContact.all_contacts.append(self)class Friend(Contact):def __init__(self, name, email, phone):super(Friend, self).__init__(name, email)self.phone = phone

Python 2.x 的环境下,对于需要被继承的父类,需要显式地将父类继承自 object 类,否则在子类使用 super(子类, self).__init__() 时会报 TypeError: must be type, not classobj.

这是因为 Python 2.x 中:

>> class A():pass
>> type(A)
classobj>> class A(object):pass
>> type(A)
type

而且 Python 2.x 也并不将 classobj 视为 type.

当然子类中使用这样的语句也是可以的:

class Friend(Contact):def __init__(self, name, email, phone):Contact.__init__(self, name, email, phone)self.phone = phone

python super()用法遇到TypeError: must be type, not classobj

2. Python 3.x

class Contact:all_contacts = []def __init__(self, name, email):self.name = nameself.email = emailContact.all_contacts.append(self)class Friend(Contact):def __init__(self, name, email, phone):super().__init__(name, email)self.phone = phone

转载于:https://www.cnblogs.com/mtcnn/p/9424027.html

Python 面向对象 —— super 的使用(Python 2.x vs Python 3.x)相关推荐

  1. python面向对象三大特性6大原则_【Python学习笔记】面向对象三大特性

    ★面向对象:封装.继承和多态是面向对象的三大特点★ 面向对象编程简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机程序视为 ...

  2. 十四、理解nn.module方法——学习python面向对象编程(一)

    起因 在(十二)中说到pytorch中创建神经网络的两种方法:一个是Sequential类(这也是一种继承父类属性和方法并可对其方法重构的子类),另一个是自己编写代码,继承nn.module类,对其内 ...

  3. Python面向对象编程:类继承和其衍生术语

    Python面向对象编程03:类继承和其衍生术语 前面我们讲到过正则表达式字符等,上一篇分享了面向对象编程和类的结构,最后稍微提到了继承. Python面向对象编程:深度认识类class_ Pytho ...

  4. (转)Python 面向对象编程(一)

    Python 面向对象编程(一) 虽然Python是解释性语言,但是它是面向对象的,能够进行对象编程.下面就来了解一下如何在Python中进行对象编程. 一.如何定义一个类 在进行python面向对象 ...

  5. python面向对象编程从零开始_Python面向对象编程从零开始(4)—— 小姐姐请客下篇

    前言 前文传送门: Python面向对象编程从零开始(2)-- 与对象相互了解:Python面向对象编程从零开始(2)-- 与对象相互了解 Python面向对象编程从零开始(3)-- 小姐姐请客上篇: ...

  6. 思维导图:python面向对象(搞笑案例)

    关联阅读:可能是最全的 Python 面向对象入门教程了 手机版本 关联阅读:可能是最全的 Python 面向对象入门教程了 Python面向对象 面向对象入门 对象编程体验 一款简单自动运行小游戏模 ...

  7. python面向对象三大特性、类的约束、print带颜色输出及super补充

    面向对象三大特性.类的约束.print带颜色输出及super补充 简述: python面向对象的三大特性: 1.继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为 ...

  8. Python面向对象之六:类的约束和super函数

    Python面向对象之六:类的约束和super函数 一.类的约束 类的约束就是对父类对子类的属性和方法进行一定的约束控制. 1.对子类属性的约束(slots) class A:__slots__ = ...

  9. python面向对象3-多层继承、super()、私有权限、多态、类属性实例属性、类方法和静态方法

    python面向对象1–类.对象.属性.魔法方法 python面向对象2–综合案例:烤地瓜.搬家具.单继承.多继承 python面向对象3-多层继承.super().私有权限.多态.类属性实例属性.类 ...

最新文章

  1. 语义分割--Label Refinement Network for Coarse-to-Fine Semantic Segmentation
  2. 今天在YY上听课感觉不错
  3. python正则表达匹配汉字
  4. java对菜单项的监听_我是新手,请问大神java菜单项和下拉列表添加监听和监听方法???有变量和方法就行了...
  5. python下载包没用_Python下载各种功能包出问题
  6. 面向对象设计思想(马老师)——笔记
  7. 【项目总结】基于STM32的物流搬运小车
  8. 应用密码学:协议、算法与C源程序(学习第一章)
  9. iOS开发-plist文件的常用操作
  10. 虚拟同步发电机_学术简报基于分散式微电网的虚拟同步发电机无通信预同步并网方案...
  11. Python基础之什么是字典?
  12. fullcalendar 日历改造
  13. 啊啊啊~~~~~ Ajax
  14. kettle使用--1.mysql多表关联导入mongoDB
  15. 桌球歷史:削球、快攻、弧圈球
  16. 606. 根据二叉树创建字符串(视频讲解!!!)
  17. 计算机配置介绍英语作文,需一篇用英文介绍笔记本电脑的小文章!~
  18. au3打开html文件,autoit获取ie浏览器简单操作网页(GUI小工具)
  19. 毫米波雷达在无人机避障系统中的应用
  20. 智能手机 - 黑科技

热门文章

  1. 介绍几个好用的android自定义控件
  2. 三角插值的 Fourier 系数推导
  3. 【.Net Micro Framework PortingKit – 14】TinyCLR编译与测试
  4. 借收购搭桥,风河Workbench软件环境涵盖至测试领域
  5. 无法访问某个网站_企业网站排名回升后,快速下跌是什么原因?
  6. js中const,var,let的区别
  7. 尽量使用覆盖索引,避免select * || 用or分割开的条件,如果or前的条件中的列有索引,而后面的列中没有索引,那么涉及的索引都不会被用到|| 如果MySQL评估使用索引比全表更慢,则不使用索引
  8. Filter:过滤器
  9. 正则表达式全部符号解释
  10. 国产化达梦数据库数据迁移文档:oracle11g数据库转达梦8数据库实例演示