Python 继承 | 字数总计: 1.1k | 阅读时长: 4分钟 | 阅读量: |
Python 继承 原文:https://www.javatpoint.com/inheritance-in-python
继承是面向对象范例的一个重要方面。继承为程序提供了代码可重用性,因为我们可以使用现有的类来创建新的类,而不是从头开始创建。
在继承中,子类获取属性,并且可以访问父类中定义的所有数据成员和函数。子类也可以向父类的函数提供其特定的实现。在教程的这一部分,我们将详细讨论继承。
在 python 中,派生类只需在派生类名称后面的括号中提到基类,就可以继承基类。考虑以下语法将基类继承到派生类中。
句法 class derived -class (base class ): <class -suite>
一个类可以通过在括号内提及所有类来继承多个类。请考虑以下语法。
句法 class derive -class (<base class 1 >, <base class 2 >, ..... <base class n >): <class - suite>
例 1 class Animal : def speak (self ): print ("Animal Speaking" ) class Dog (Animal ): def bark (self ): print ("dog barking" ) d = Dog() d.bark() d.speak()
输出:
dog barking Animal Speaking
Python 多级继承 像其他面向对象语言一样,python 中的多级继承是可能的。当一个派生类继承另一个派生类时,多级继承被存档。在 python 中,多级继承的存档级别不限。
下面给出了多级继承的语法。
句法 class class1 : <class -suite> class class2 (class1 ): <class suite > class class3 (class2 ): <class suite > . .
例子 class Animal : def speak (self ): print ("Animal Speaking" ) class Dog (Animal ): def bark (self ): print ("dog barking" ) class DogChild (Dog ): def eat (self ): print ("Eating bread..." ) d = DogChild() d.bark() d.speak() d.eat()
输出:
dog barking Animal Speaking Eating bread...
Python 多重继承 Python 为我们提供了在子类中继承多个基类的灵活性。
下面给出了执行多重继承的语法。
句法 class Base1 : <class -suite> class Base2 : <class -suite> . . . class BaseN : <class -suite> class Derived (Base1, Base2, ...... BaseN): <class -suite>
例子 class Calculation1 : def Summation (self,a,b ): return a+b; class Calculation2 : def Multiplication (self,a,b ): return a*b; class Derived (Calculation1,Calculation2): def Divide (self,a,b ): return a/b; d = Derived() print (d.Summation(10 ,20 ))print (d.Multiplication(10 ,20 ))print (d.Divide(10 ,20 ))
输出:
issubclass(sub,sup)方法 issubclass(sub,sup)方法用于检查指定类之间的关系。如果第一个类是第二个类的子类,则返回 true,否则返回 false。
考虑下面的例子。
例子 class Calculation1 : def Summation (self,a,b ): return a+b; class Calculation2 : def Multiplication (self,a,b ): return a*b; class Derived (Calculation1,Calculation2): def Divide (self,a,b ): return a/b; d = Derived() print (issubclass (Derived,Calculation2))print (issubclass (Calculation1,Calculation2))
输出:
isinstance (obj,class)方法 isinstance()方法用于检查对象和类之间的关系。如果第一个参数(即 obj)是第二个参数(即类)的实例,则返回 true。
考虑下面的例子。
例子 class Calculation1 : def Summation (self,a,b ): return a+b; class Calculation2 : def Multiplication (self,a,b ): return a*b; class Derived (Calculation1,Calculation2): def Divide (self,a,b ): return a/b; d = Derived() print (isinstance (d,Derived))
输出:
方法重写 我们可以在子类中提供父类方法的一些具体实现。当父类方法在子类中用一些特定的实现来定义时,这个概念被称为方法重写。在子类中需要父类方法的不同定义的情况下,我们可能需要执行方法重写。
考虑下面的例子,在 python 中执行方法重写。
例子 class Animal : def speak (self ): print ("speaking" ) class Dog (Animal ): def speak (self ): print ("Barking" ) d = Dog() d.speak()
输出:
方法重写的真实例子 class Bank : def getroi (self ): return 10 ; class SBI (Bank ): def getroi (self ): return 7 ; class ICICI (Bank ): def getroi (self ): return 8 ; b1 = Bank() b2 = SBI() b3 = ICICI() print ("Bank Rate of interest:" ,b1.getroi());print ("SBI Rate of interest:" ,b2.getroi());print ("ICICI Rate of interest:" ,b3.getroi());
输出:
Bank Rate of interest: 10 SBI Rate of interest: 7 ICICI Rate of interest: 8
python 中的数据抽象 抽象是面向对象编程的一个重要方面。在 python 中,我们还可以通过向要隐藏的属性添加双下划线(___)作为前缀来执行数据隐藏。此后,通过对象,该属性在类外部将不可见。
考虑下面的例子。
例子 class Employee : __count = 0 ; def __init__ (self ): Employee.__count = Employee.__count+1 def display (self ): print ("The number of employees" ,Employee.__count) emp = Employee() emp2 = Employee() try : print (emp.__count) finally : emp.display()
输出:
The number of employees 2 AttributeError: 'Employee' object has no attribute '__count'