2322312 发表于 2016-11-21 09:19:55

python 之简单浅谈新式类和旧式类(或称经典类)

#_*_coding:utf-8 _*_
#知识点:经典类和新式类的区别

#父类
class Father(object):
    def __init__(self):
      self.Fname = 'fffffff'
      print 'father.__init__'
    def Func(self):
      print 'funcfurnc'
    def Bar(self):
      print 'barbarbar'
    def Test(self): #再定义一个方法
      print '11111'
      print 'testtest'

#子类继承父类,也就是说Son类可以拿到Father类的方法
class Son(Father):
    def __init__(self):
      self.Sname = 'sonsonson'
      print 'son.__init__'
      Father.__init__(self) #调用父类的构造函数,这是第一种形式,这种方式可以不用继承object
      super(Son, self).__init__() #调用父类的构造函数,这是第二种形式,必须继承object

    def Yes(self):
      print 'barbarbar'
    def Test(self):
      print 'aaaaaaaa'    #重写父类的Test方法

#实例化子类,尝试访问在父类的方法
s1 = Son() #实例化子类
s1.Bar()    #成功访问父类的方法
s1.Test()   #访问重写后的方法

'''
其他说明:
如果继承了object 那么就是新式类, 推荐使用新式类
如果没有继承object 那么就是经典类

区别:
经典类,在多继承时采用深度优先遍历父类
新式类,在多继承时采用一种新的C3算法来遍历父类
'''


页: [1]
查看完整版本: python 之简单浅谈新式类和旧式类(或称经典类)