美文网首页
新式类与旧式类

新式类与旧式类

作者: comboo | 来源:发表于2017-04-12 11:11 被阅读27次

    作为补充知识.另外,以后版本定在python3,很多旧的写法了解就好了.

    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
    

    经典类已经被python3移除.在python2中,通过class直接定义的是经典类,通过继承object的是新式类

    新式类

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

    #python2
    #基类(新式类)
    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()
    
    #coding:utf-8
    #父类
    class A:
        def spam(self):
            print('A.spam')
    
    #子类
    class B(A):
        def spam(self):
            print('B.spam')
            super().spam()  # Call parent spam()
    

    python3里面,直接用class 定义的是新式类。。。

    相关文章

      网友评论

          本文标题:新式类与旧式类

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