本系列博客(python 类) 的部分例子来自于 <<python 核心编程 第二版>>
前面我们谈到 python 继承,是可以引用父类的__init__方法的 ,并在此基础上添加子类自己的特殊的属性的设定,形成子类自己的__init__ 构造函数。
在这种方法中,必须显示的指出父类的名字。
#coding:utf-8 class p(object): def __init__(self,nm): self.name = nm class c(p): def __init__(self,nm,idnum): p.__init__(self,nm) #引用父类的__init__方法,必须显示的指出父类的名字 self.id = idnum c1 = c(‘john‘,11) print c1.name,c1.id
运行结果是:
如果父类修改了名字,那么子类的代码也要修改这个名字。就是耦合度就高了。
python提供了一种方法,可以自动的找到父类的名字
super()方法,只要传递子类的名字和self作为参数,就可以自动的找到父类的名字。
这样,不论父类的名字怎么修改,都不会影响子类的调用了。
#coding:utf-8 class p(object): def __init__(self,nm): self.name = nm class c(p): def __init__(self,nm,idnum): super(c,self).__init__(nm) self.id = idnum c1 = c(‘john‘,11) print c1.name,c1.id
运行结果是:
[root@puppet-master-231-test eg_4]# python2.7 class_inherit_demo_5.py john 11
本文出自 “linux与网络那些事” 博客,请务必保留此出处http://khaozi.blog.51cto.com/952782/1858707
原文地址:http://khaozi.blog.51cto.com/952782/1858707