经典类与新式类

以前版本 ~ python 2.1,我们只能使用经典类。
python 2.2 ~ 最新版本, 我们可以使用新式类了。
新式类被赋予了很多新的特性(如:统一了types和classes),并改变了以往经典类的一些内容(如:改变了多继承下方法的执行顺序)

建议从现在开始,使用python的新式类

1. 经典类

没有继承的类,
注意:如果经典类被作为父类,子类调用父类的构造函数时会出错。【TypeError: must be type, not classobj】

#基类(经典类)
class Person:
    def __init__(self):
        print "Hi, I am a person. "

#子类
class Student(Person):
    def __init__(self):
        super(self.__class__, self).__init__()

if __name__ == "__main__":
    student = Student()
    #出错啦!TypeError: must be type, not classobj

2. 新式类

每个类都继承于一个基类,可以是自定义类或者其它类,如果什么都不想继承,那就继承于object
如果想用super调用父类的构造函数,请使用新式类!

#基类(新式类)
class Person(object):
    def __init__(self):
        print "Hi, I am a person."

#子类
class Student(Person):
    def __init__(self):
        super(self.__class__, self).__init__()

if __name__ == "__main__":
    student = Student()

[帮助]
python New-Style class

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • @(python)[笔记] 目录 前言 在python中,一切皆对象面向对象的程序设计的核心就是对象;面向对象的程...
    CaiGuangyin阅读 618评论 0 5
  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 26,295评论 9 118
  • 1,我爱你不仅仅用尽我的一生,还用了整整六个女人;她们沉浮在我散漫的记忆里,她们是我背后经久的纹身。 2,注定不会...
    愤怒的猪猪阅读 462评论 5 4
  • 我在英菲尼迪4S店工作,薪水不高,但有提成,卖出一辆车,就抵得上两三个月的收入了。 近来,店里进了一款英菲尼迪轿跑...
    hongmeiyan阅读 471评论 2 1
  • 高密市朝阳小学六.二刘子琪指导教师乔淑娥 书,是我们知识的海洋;书,是人类开阔大脑的良师益友;书,是开阔知识大门的...
    书漫ing阅读 232评论 0 1