新式类与旧式类

2017-04-12  本文已影响27人  comboo

作为补充知识.另外,以后版本定在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 定义的是新式类。。。

上一篇下一篇

猜你喜欢

热点阅读