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

作者:辰晓2046 时间:2021-11-16 12:43:52 

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

1. 继承

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


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来进行初始化。


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__()函数中参数的数量可能不同,那应该怎么初始化呢?如下例。


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,面向对象,继承,多继承
0
投稿

猜你喜欢

  • MySQL数据库优化经验详谈

    2009-12-15 10:34:00
  • asp如何使用SMTP Service发送邮件?

    2010-06-05 12:43:00
  • 301转向代码合集

    2008-03-20 10:12:00
  • python 中文乱码问题深入分析

    2023-06-12 19:04:37
  • 修改新云CMS底部版权信息字数限制

    2008-07-31 18:00:00
  • 100%全屏布局设计

    2009-05-15 12:24:00
  • TensorFlow神经网络创建多层感知机MNIST数据集

    2022-03-29 20:09:19
  • Python标准库defaultdict模块使用示例

    2022-03-02 04:35:05
  • Python基础之dict和set的使用详解

    2022-01-16 04:15:08
  • Python 抓取动态网页内容方案详解

    2022-05-19 02:09:29
  • PHP封装的PDO数据库操作类实例

    2023-11-18 04:54:31
  • Python中常用的字典键和值排的方法

    2022-12-22 15:51:05
  • Django restframework 框架认证、权限、限流用法示例

    2023-01-17 15:51:20
  • 如何用Frontpage下载别人的网站模板

    2008-03-03 12:58:00
  • PHP中file_get_contents函数抓取https地址出错的解决方法(两种方法)

    2023-10-14 02:31:42
  • Linux PHP连接MSSQL

    2011-06-02 12:01:00
  • python使用jieba实现中文分词去停用词方法示例

    2021-02-04 11:27:17
  • Pytorch数据读取与预处理该如何实现

    2021-12-23 17:44:35
  • 浅谈python内置函数callable的用法

    2023-01-28 11:12:42
  • Python使用googletrans报错的解决方法

    2021-09-21 01:38:00
  • asp之家 网络编程 m.aspxhome.com