以前版本 ~ 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()