Python教程:多态性

多态性是OOPs的一个特点,它标志着一个名字可以有不同的功能。一个实体可以采取不同的形式。

本教程将展示多态性在Python中是如何实现的。

1.Python中的多态性

理解这个问题的最好方法是使用len() 函数。这个函数对不同的对象有不同的解释。

对于一个列表,它将返回存在的全部元素,对于一个字符串,将返回存在的全部字符。

代码:

lst = ['delft', 'stack']
s = 'delftstack'
print(len(lst), len(s))

输出:

2 10

另一个说明Python中多态性的常见功能是+ 操作符。这个运算符可以在Python中执行两个数字之间的加法。

然而,当与字符串一起使用时,它就像一个连接运算符,将两个字符串结合起来。

代码:

a = 5 + 6
s = 'delft' + 'stack'
print(a, s)

输出:

11 delftstack

2.在Python中使用类方法实现多态性

在Python中所有的东西都是一个对象,都属于某个类。方法与类的对象相关联。

这就是为什么+ 操作符和len() 函数对不同的对象执行不同的功能。+ 操作符调用一个为不同对象定义的不同的魔法函数。

我们可以创建我们的类并实现这一点。两个类可以有相同名称的函数,但有不同的目的和不同的定义。

代码:

class A:
    def fun(self):
        print("Class A")
class B:
    def fun(self):
        print("Class B")
ob1 = A()
ob2 = B()
for i in (ob1, ob2):
    i.fun()

输出:

Class A
Class B

在Python中使用方法重写实现多态性

多态性在Python中也与类的继承有关。继承是指一个类访问另一个类的特征。

一个类和它的子类可能包含同名的函数,我们可以在Python中使用函数覆盖。使用方法覆盖,我们可以在子类中实现已经定义的方法。

我们可以根据子类的情况重新定义函数。

代码:

class A:
    def fun(self):
        print("Class A")
class B(A):
    def fun(self):
        print("Class B")
ob1 = A()
ob2 = B()
for i in (ob1, ob2):
    i.fun()

输出:

Class A
Class B

在上面的代码例子中,类B 继承自类A ,但是fun() 的方法在类B 中被覆盖,并且根据类来定义。

我们也可以从类A 中访问被重载的函数fun() 。

代码:

class A:
    def fun(self):
        print("Class A")
class B(A):
    def fun(self):
        A.fun(self)
        print("Class B")
ob2 = B()
ob2.fun()

输出:

Class A
Class B

3.在Python中使用函数和操作符重载实现多态性

函数重载是一个有趣的功能,它实现了多态性。这个功能在Python中是没有的,在Python中会调用最近定义的函数。

在Python中,有可能对运算符进行重载。我们知道,不同的运算符可以根据对象的类型执行不同的功能,通过+ 运算符可以清楚地看到。

发生这种情况是因为每当使用一个运算符时,它都会在内部调用一个神奇的函数。例如,+ 运算符在内部调用了__add__ 方法。

这个神奇的函数在其名称前后都有双下划线。魔法函数不是用来直接调用的,但我们可以为不同的类定义魔法函数来修改不同运算符的行为。

代码:

class A:
    def __init__(self, a):
        self.a = a
    def __add__(self, o):
        return self.a + o.a + 2
ob1 = A(5) #Python小白学习交流群:711312441
ob2 = A(4)
print(ob1+ob2)

输出:

11

在上面的例子中,我们通过修改类A 的魔法函数来重载+ 操作符,并在结果中加入2 。

你可能感兴趣的:(python,开发语言)