#old-style class
class Base():
def __init__(self, name):
self.name = name
class Child(Base):
def __init__(self,name):
Base.__init__(self,name)
print self.name
Child('zs')
#new-style class
class Base(object):
def __init__(self, name):
self.name = name
class Child(Base):
def __init__(self,name):
super(Child, self).__init__(name)
print self.name
Child('zs')
常见错误:
class Base():
def __init__(self, name):
self.name = name
class Child(Base):
def __init__(self,name):
super(Child,self).__init__(self,name) #old-style class不支持super,这里会报错“TypeError: must be type, not classobj”
print self.name
Child('zs')
修正方式:
1. Base继承object,即修改为new-style class方式
2. 修改为old-style class方式,即第一个示例(去掉super)
-end
本文探讨了Python中旧式类与新式类的区别,重点介绍了如何使用super()方法来调用基类的构造函数,并给出了常见的错误示例及修正方法。
1693

被折叠的 条评论
为什么被折叠?



