8288分类目录 8288分类目录 8288分类目录
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

子类初始化父类的二种方法

来源:本站原创 浏览:120次 时间:2022-09-01

类是面向对象编程中重要的概念,在大型项目中合理采用设计好的类,可以使系统逻辑更为清晰和健壮,在开发前期一般我们会设计一个或多个父类,设定好子类和父类的继承关系,其中很重要的就是父类初始化,所以今天我们来看看在子类中如何初始化父类和调用父类方法,只有了解了这些,你再看一些开源代码时才有头绪,否则双眼一抹黑,都不知道从哪里看起,对一些大型项目,理清他们类之间的关至关重要,其他不多说了,我们看具体实现方法:

第一种是在子类中显示的指定父类,调用父类的__init__()来初始化,我们看例子,现在我们有父类P,子类M,代码如下:

class P:

     def __init__(self, name, age):

         self.name = name

         self.age = age


     def getname(self):

        return self.name

     

     def getage(self):

        return self.age


class M(P):

    def __init__(self, name, age, salary):

        P.__init__(self, name, age)

        self.salary = salary


    def getsalary(self):

        return self.salary


if __name__ == '__main__':

    t = M('xiaoming',12,1000)

    print 'myname is %s,age is %s, salary is %s' %(t.getname(), t.getage(), t.getsalary())


这段代码中在子类M的__init__构造函数中显示调用父类P的__init__()方法来进行初始化,同时也继承了父类的getname()和getage()方法,所以在实例化后运行结果是:

myname is xiaoming,age is 12, salary is 1000


接下来我们用第二种方法,采用super()函数来对父类的初始化,还是上面的代码,我稍作修改,如下:

class P(object):

     def __init__(self, name, age):

         self.name = name

         self.age = age


     def getname(self):

        return self.name

     

     def getage(self):

        return self.age


class M(P,object):

    def __init__(self, name, age, salary):

        super(M,self).__init__(name,age)

        self.salary = salary


    def getsalary(self):

        return self.salary


if __name__ == '__main__':

    t = M('xiaoming',12,1000)

    print 'myname is %s,age is %s, salary is %s' %(t.getname(), t.getage(), t.getsalary())


因为super函数只能用于新式类中,所以每个类都继承object类,在这段代码中我们用super(M,self).__init__(name,age),这句对父类进行了初始化,这段代码运行结果跟第一个例子是一样的,那有人可能就有疑问了,两种方法都可以,我应该采用哪种方法比较好,我的建议是采用super函数,因为这个函数比较先进,它是借鉴了其他语言的特性加到python中的,你不用给它指定父类的名称,它自己会寻找父类并进行继承,这个在多继承时非常有用,如果是单继承,你可以显示的调用父类的初始化方法,也可用super函数,没特殊性,这篇就到这里


  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net