python3中的继承和多态

1. 继承

1.1 什么是继承

Python中的继承是一种面向对象编程中的重要概念。继承是一个类(称为子类)从另一个类(称为父类)获得属性和方法的过程。子类比父类更具体化,因为它们具有父类的所有功能,也可以有自己的独特功能。

1.2 继承的语法

可以使用下面的语法来创建一个继承自父类的子类:

class ChildClass(ParentClass):

# ChildClass 属性和方法

此代码将创建一个名为 ChildClass 的子类,该子类继承了 ParentClass 中定义的所有属性和方法。

1.3 继承的例子

下面是一个简单的例子,说明继承可以如何工作:

class Animal:

def __init__(self, name):

self.name = name

def talk(self):

raise NotImplementedError("Subclass must implement abstract method")

class Cat(Animal):

def talk(self):

return 'Meow!'

class Dog(Animal):

def talk(self):

return 'Woof!'

animals = [Cat('Missy'), Dog('Lassie')]

for animal in animals:

print(animal.name + ': ' + animal.talk())

代码中定义了一个名为 Animal 的父类,该类具有一个名为 talk 的方法。这个方法由子类实现。在本例中,cat 类和 dog 类是 Animal 类的两个子类,它们分别实现其 talk 方法。在循环中,我们创建一个列表,其中包含两种类型的动物。我们遍历这个列表并对每个动物进行 talk,然后打印输出。

运行这个程序,它将输出以下内容:

Missy: Meow!

Lassie: Woof!

2. 多态

2.1 什么是多态

多态是一种面向对象编程的概念,它允许不同的对象以不同的方式对相同的方法做出响应。多态可以帮助您创建可重用的代码,因为您可以编写代码来处理多个不同类型的对象。

2.2 多态的实现

Python实现多态是很简单的,只需要继承父类,并且覆盖已经存在的方法就可以了。

下面是一个使用多态的例子:

class Shape:

def area(self):

pass

class Square(Shape):

def __init__(self, length):

self.length = length

def area(self):

return self.length * self.length

class Circle(Shape):

def __init__(self, radius):

self.radius = radius

def area(self):

return 3.14 * self.radius * self.radius

shapes = [Square(4), Circle(7)]

for shape in shapes:

print('Area of', type(shape).__name__, '=', shape.area())

这个例子中,shape 类被定义为父类。Square 类和 Circle 类是从 Shape 类继承的两个子类。在这些子类中,它们的 area 方法被 override 以返回不同的值。在 main 函数中,我们创建了一个包含 Square 和 Circle 对象的列表,并用它来演示多态。遍历这个列表,用 type(shape).__name__ 访问当前对象的名称,然后将形状的 area 输出到控制台。

运行这个程序,它将输出以下内容:

Area of Square = 16

Area of Circle = 153.86

3. 总结

在 Python 中,使用继承可以让我们避免代码的重复,他可以让我们很方便的将共性的部分放到父类中去实现。多态的实现可以让我们在处理不同的对象时以不同的方式进行统一处理,这也是一种面向对象编程思想。在实际的编程中,我们常常可以将两者结合起来使用,以便更加方便地处理问题。

后端开发标签