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

经典类与新式类

作者: 周文洪 | 来源:发表于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

    相关文章

      网友评论

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

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