新式类与旧式类
2017-04-12 本文已影响27人
comboo
作为补充知识.另外,以后版本定在python3,很多旧的写法了解就好了.
- 经典类
没有继承的类,
注意:如果经典类被作为父类,子类调用父类的构造函数时会出错。【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 定义的是新式类。。。