Python 继承

Python 继承

继承是面向对象编程中的重要概念。通过继承,程序可以重用现有的类来创建新的类,而不是从头开始创建。

在继承中,子类继承了父类的属性,并且可以访问父类中定义的所有数据成员和函数。子类还可以对父类的函数进行特定实现。在本教程的这一部分,我们将详细讨论继承。

在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")
#child class Dog inherits the base class Animal
class Dog(Animal):
    def bark(self):
        print("dog barking")
d = Dog()
d.bark()
d.speak()

输出:

dog barking
Animal Speaking

Python多级继承

在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")
#The child class Dog inherits the base class Animal
class Dog(Animal):
    def bark(self):
        print("dog barking")
#The child class Dogchild inherits another child class Dog
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为我们提供了在子类中同时继承多个基类的灵活性。

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))

输出:

30
200
0.5

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))

输出:

True
False

isinstance (obj, class)方法

isinstance()方法用于检查对象和类之间的关系。如果第一个参数obj是第二个参数class的实例,则返回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))

输出:

True

方法重写

我们可以在子类中对父类方法进行一些特定的实现。当在子类中使用特定实现定义父类方法时,这个概念被称为方法重写。在子类中需要不同定义父类方法的场景下,我们可能需要执行方法重写。

考虑以下示例在python中执行方法重写。

示例

class Animal:
    def speak(self):
        print("speaking")
class Dog(Animal):
    def speak(self):
        print("Barking")
d = Dog()
d.speak()

结果:

Barking

实际生活中方法重写的例子

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'

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程