美文网首页程序员
经典类与新式类

经典类与新式类

作者: 周文洪 | 来源:发表于2013-08-07 10:49 被阅读1346次

以前版本 ~ 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 super用法 2018-01-28

    新式类,经典类 python3之后均称为新式类,默认继承object类 Python2.x版本分为:分新式类与经典...

  • python中的新式类和经典类简析

    Python新式类与经典类的区别 1.新式类与经典类 在Python 2及以前的版本中,由任意内置类型派生出的类(...

  • Python新式类的方法解析顺序MRO与Super

    新式类与经典类的方法解析顺序 MOR(方法解析顺序) 经典类:深度优先 DFS python3以前 新式类:广度优...

  • 新式类与经典类

    新式类:继承于object的类都是新式类。 经典类:不是继承object的类都是经典类 在多继承中,新式类采用广度...

  • 经典类与新式类

    以前版本 ~ python 2.1,我们只能使用经典类。python 2.2 ~ 最新版本, 我们可以使用新式类了...

  • 新式类、经典类

    继承 object 类的是新式类,不继承 object 类的是经典类,在 Python 2.7 里面新式类和经典类...

  • 请简述python 经典类和新式类的区别?

    Python中类分为两种:经典类和新式类: 新式类都从object继承,经典类不需要。 新式类的MRO算法曹勇c3...

  • Flask 2019-10-08

    python2与python3都有经典类和新式类这两种写法,在python2中经典类和新式类的. 继承方式不一...

  • 新式类和旧式类区别

    Python中类分两种:旧式类和新式类:➤新式类都从object继承,经典类不需要。 ➤新式类的MRO(metho...

  • Python多继承的执行顺序

    经典类和新式类的写法: class A: #经典类(旧式类)写法..................clas...

网友评论

    本文标题:经典类与新式类

    本文链接:https://www.haomeiwen.com/subject/bhyftttx.html