gpt4 book ai didi

Python面向对象程序设计之继承与多继承用法分析

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 24 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Python面向对象程序设计之继承与多继承用法分析由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

本文实例讲述了Python面向对象程序设计之继承与多继承。分享给大家供大家参考,具体如下:

1. 继承 。

在C++和Java中,使用继承时,子类的构造函数会自动调用父类的构造函数,但在Python中,子类必须显式的在__init__()函数中再次调用父类中的__init__()函数。如下例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
class Employee( object ):
   def __init__( self , name, salary = 0 ):
     self .name = name
     self .salary = salary
   def raisesalary( self , percent):
     self .salary = self .salary * ( 1 + percent)
   def work( self ):
     print self .name, "writes computer code"
class Designer(Employee):
   def __init__( self , name):
     Employee.__init__( self , name, 5000 )
   def work( self ):
     print self .name, "writes design document"

子类Designer也可以使用super来进行初始化.

?
1
2
3
4
5
class Designer(Employee):
   def __init__( self , name):
     super (Designer, self ).__init__(name, 5000 )
   def work( self ):
     print self .name, "writes design document"

2. 多继承 。

在C++中,使用虚继承来实现多继承,以避免子类在继承时多次调用基类的构造函数,而在Java中,则取消了多继承,使用接口来达到多继承的效果。在Python中的解决方案是MRO即Method Resolution Order,方法解析顺序。主要是通过super方法实现的。但如果用super方法来解决多继承问题,由于各个父类中的__init__()函数中参数的数量可能不同,那应该怎么初始化呢?如下例.

?
1
2
3
4
5
6
7
8
9
10
class A( object ):
   def __init__( self , a):
     print a
class B( object ):
   def __init__( self , a, b):
     print a + b
class C(A, B):
   def __init__( self ):
     super (C, self ).__init__(?)
c = C()

则?处应该填几个参数?

答案是1个参数,因为按照继承的顺序,A类中的构造需要1个参数初始化即可。即super函数与父类的继承顺序有关,且初始化父类继承顺序中,最先有__init__()方法的那个.

super方法的使用仍在继续探索中。。.

希望本文所述对大家Python程序设计有所帮助.

原文链接:https://blog.csdn.net/chenxiao_ji/article/details/50311597 。

最后此篇关于Python面向对象程序设计之继承与多继承用法分析的文章就讲到这里了,如果你想了解更多关于Python面向对象程序设计之继承与多继承用法分析的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com