Python 中的继承类型Python 继承 [附例]

已发表: 2021-02-09

目录

介绍

争取干净代码的斗争是所有程序员都参与的战斗。 并且可以通过适当的面向对象编程概念来征服这场战斗。 正确利用 OOP 概念有助于我们提高代码的可重用性、可读性、最佳时间和空间复杂度。

用 Python 编码非常有趣。 它拥有大量的库支持、面向对象、GUI 可编程性,使其成为所有编程语言中的热门话题。

继承是最常用的面向对象功能之一,在 python 中实现它是一项热情的任务。 那么,让我们现在开始吧!

首先,让我们了解继承的定义。

遗产

继承是获取另一个类的属性和特征(变量和方法)的过程。 在这种层次顺序中,继承另一个类的类称为子类或子类,另一个类称为父类。

继承根据所遵循的层次结构以及所涉及的父类和子类的数量进行分类。

继承有五种类型:

  1. 单一继承
  2. 多重继承
  3. 多级继承
  4. 分层继承
  5. 混合继承

单一继承

这种继承方式使子类或派生类能够继承父类的属性和特性,避免了代码的重复,提高了代码的可重用性。

#父类
以上
我 = 5
def fun1 (自我):
print( “嘿,你在父类中” )

#子类
(上)
我= 10
def fun2 (自我):
print( “嘿,你在子类中” )

temp1=低于()
temp2=以上()
temp1.fun1()
temp1.fun2()
temp2.​​fun1()
打印(temp1.i)
打印(temp2.​​i)
#temp2.​​fun2()

好吧,让我们看一下上面的代码。

在上面的代码中,“Above”是父类,“Below”是继承父类的子类。 在python中实现继承是一项简单的任务,我们只需要在子类的括号中提及父类名即可。 我们正在创建父类和子类的对象,这里有一个关于继承的有趣点。 子类可以访问父类的方法和变量,反之则不然。

所以在上面的代码中 temp1 对象可以访问 fun1 和 fun2 方法,而 temp2 对象只能访问 fun1 方法。 同样,同样的规则也适用于代码中的变量。 从父类对象访问子类方法或变量将引发错误。 如果代码中的最后一行未注释,则会引发错误。

多重继承

这种继承使子类可以从多个父类继承。 java类不支持这种继承,但是python确实支持这种继承。 如果我们需要从不同的类中收集多个特征,它具有巨大的优势。

#父类1
甲类 _
演示1= 0
def fun1 (自我):
打印(self.demo1)

#父类2
B
演示2= 0
def fun2 (自我):
打印(self.demo2)

#子类
C(A,B):
def fun3 (自我):
print( “嘿,你在孩子班” )

# 主要代码
c = C()
c.demo1 = 10
c.demo2 = 5
c.fun3()
print( "第一个数字是:" ,c.demo1)
print( "第二个数字是:" ,c.demo2)

在上面的代码中,我们创建了两个父类“A”、“B”。 按照python中的继承语法,我们创建了一个子类,它继承了类“A”和“B”。 如前所述,子类可以访问父类的方法和变量,子类“C”可以访问其父类的方法。

多级继承

在多级继承中,特征属性的传递是分层地传递给多个类的。 为了获得更好的可视化效果,我们可以将其视为祖先与孙辈的关系,或多于一层的树中的根与叶。

#父类1

def功能(自我):
print( “车辆用于运输” )

#儿童班1
(车辆):
def轮子(自己):
print( “一辆汽车有四个轮子” )

#儿童班2
electric_car (汽车):
def专业(自我):
print( “电动汽车靠电行驶” )

电动=电动车()
电气专业()
电动轮子()
电动功能()

对上面的代码进行试运行,我们创建了一个类“车辆”,然后我们创建了一个继承类车辆的类汽车。 现在“车辆”是父类,“汽车”是子类。 后来我们创建了一个“electric_car”类,现在car类是父类,electric_car类是子类,vehicle类和electric_car类的关系是多级继承。

这里electric_car类可以访问vehicle和car类的方法和变量,而car类只能访问vehicle类的方法和变量。 正如所讨论的,父类车辆不能访问子类的任何方法。

分层继承

这种继承允许一个类作为父类托管多个子类或子类。 这提供了与多个子类共享方法功能的好处,从而避免了代码重复。

#父类

def fun1 (自我):
print( “嘿,你在父类中” )

#儿童班1
班级child1 (父母):
def fun2 (自我):
print( “你好,你在儿童班 1” )

#儿童班2
child2 (父母):
def fun3 (自我):
print( “你好,你在二班” )

#儿童班3
班级child3 (父母):
def fun4 (自我):
print( “你好,你在儿童班 3” )

# 主程序
child_obj1 = child3()
child_obj2 = child2()
child_obj3 = child1()
child_obj1.fun1()
child_obj1.fun4()
child_obj2.fun1()
child_obj2.fun3()
child_obj3.fun1()
child_obj3.fun2()

在上面的代码中,我们有一个父类和多个继承同一个父类的子类。 现在所有子类都可以访问父类的方法和变量。 我们创建了一个“Parent”类和 3 个子类“child1”、“child2”、“child3”,它们继承了同一个父类“Parent”。

结帐: Python 开源项目的想法

混合继承

如果在同一代码中实现了不止一种类型的继承,则继承称为混合继承。 此功能使用户能够最好地利用继承功能。 这满足了实现一个在实现中需要多重继承的代码的需求。

A类:
def fun1(自我):
print(“嘿,你在 A 班”)B(A) 班:
def fun2(自我):
print(“嘿,你在 B 班”) C(A) 班:
def fun3(自我):
print(“嘿,你在 C 班”)class D(C,A): #line 13
def fun4(自我):
print(“嘿,你在 D 班”)#main 程序
参考 = D()
ref.fun4()
ref.fun3()
ref.fun1()

在上面的代码中,我们可以看到我们已经实现了不止一种类型的继承。 A、B、C 类实现分层继承,A、C、D 类实现多级继承。 不,这些单独的继承具有访问父类的方法和变量的单独属性。 另外,还有一点需要注意。

当我们实现多级继承时,我们遵循类似“child_class(parent_class1, parent_class2)”的语法。 但是,如果“parent_class1”在层次上高于“parent_class2”,则此语法将引发错误。 如果我们想实现这种语法,那么“parent_class1”必须在层次上低于“parent_class2”。 例如在上面的代码中,如果第 13 行有一个语法类 D(A, C),那么代码将无法工作,因为 C 类在层次上低于 A 类。

学习世界顶尖大学的数据科学课程获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

阅读: Python 项目理念和主题

结论

我们已经了解了继承的用途和需求,并理解了继承的定义。 此外,我们还浏览了继承的类型,并浏览了每种继承的实现代码和解释。 了解不同类型继承中变量和方法访问的规则。

既然您已经了解了 python 中不同类型的继承,请尝试实现它们并尝试在您的代码中使用它们。 尝试使用适当的继承来优化您的代码。

如果您想了解数据科学,请查看 IIIT-B 和 upGrad 的数据科学 PG 文凭,该文凭专为在职专业人士而设,提供 10 多个案例研究和项目、实用的实践研讨会、与行业专家的指导、1-与行业导师面对面交流,400 多个小时的学习和顶级公司的工作协助。

多重继承和多级继承有什么区别?

许多初学者程序员经常对多重继承和多级继承感到困惑。 下面说明了这两种继承类型之间的一些显着差异。
多重继承-
1. 当子类从多个基类继承其属性和特性时,这种继承称为多重继承。
2. 它没有被广泛使用,因为多重继承可能很难理解。
3.它只有两个类级别:基类和派生类。
多级继承
1. 子类从其基类继承属性的继承,该继承又从另一个基类继承属性,使前者成为子类,称为多级继承。
2.这种继承有很大的用途,因此被广泛使用。
3. 至少具有三个类级别:基类、中间类和派生类。

你对混合继承了解多少?

混合继承是一种独特的继承类型。 顾名思义,它不是一个新概念,而是两种或多种继承类型的组合。 例如,显示多级和多级继承的类是混合继承的一个示例。

你对 Python 中的访问修饰符了解多少?

在 Python 中,有 3 种类型的访问修饰符,如下所述:
1.公共访问修饰符- 类的公共成员可由程序的任何部分访问。 在 Python 中,如果未指定数据成员或成员函数的访问说明符,则默认为 public。
2.受保护的访问修饰符——如果数据成员或成员函数被定义为受保护的,那么它只能由该类的派生类访问。
3.私有访问修饰符——私有访问修饰符是最安全的访问说明符。 私有成员只能在定义它们的类中访问。