python中多态是什么意思_python类的多态是什么
花呗逾期会怎样多态⾸先是建⽴在继承的基础上的,先有继承才能有多态。多态是指不同的⼦类在继承⽗类后分别都重写覆盖了⽗类的⽅法,即⽗类同⼀个⽅法,在继承的⼦类中表现出不同的形式。多态成⽴的另⼀个条件是在创建⼦类时候必须使⽤⽗类new⼦类的⽅式。Fu f1 = new Zi1();
Fu f2 = new Zi2();
f1.c();
f2.c();
⼦类Zi1,Zi2继承了⽗类Fu,并且重写了⽗类的⽅法c()
然后通过f1,和f2去调⽤⼦类重写⽗类后的这个⽅法。即还有⼀个成⽴条件是⼦类必须重写⽗类的⽅法。
⾯向对象的三个基本特征是:封装、继承、多态。
⽐如,你和你朋友同时继承了⼈这个类中打⼈的⽅法,但是你⽤拳头打⼈和你朋友⽤巴掌打⼈的⽅法都是打⼈⽅法,却表现出不同的形式,这就是现实⽣活中多态的理解。
关于多态,有⼀个被称作“鸭⼦类型”(duck typeing)的东西,其含义在维基百科中被表述为:
在程序设计中,鸭⼦类型(英语:duck typing)是动态类型的⼀种风格。在这种风格中,⼀个对象有效的语义,不是由继承⾃特定的类或实现特定的接⼝,⽽是由当前⽅法和属性的集合决定。这个概念的名字来源于由 James Whitcomb Riley 提出的鸭⼦测试(见下⾯的“历史”章节),“鸭⼦测试”可以这样表述:“当看到⼀只鸟⾛起来像鸭⼦、游泳起来像鸭⼦、叫起来也像鸭⼦,那么这只鸟就可以被称为鸭⼦。”
在 python 中多态的经典使⽤可以⽤两句话来总结对扩展开放和对修改封闭,即著名的「开闭」原则。对扩展开放即可以随意的增加⽗类的⼦类;对修改封闭即对于依赖⽗类的函数,新增⼦类对该函数⽆任何影响⽆需做任何修改。钢铁侠叫什么名字
我们可以通过以下代码来加深理解:#!/usr/bin/env python3
# -*- coding:utf-8 -*-
class Person:
家风格言
def __init__(lf, name, age):
lf.name = name
lf.age = age
电视信号接收器
def print_age(lf):
print("%s's age is %s" % (lf.name, lf.age))
class Man(Person):
def print_age(lf):
print("Mr. %s's age is %s" %(lf.name, lf.age))
class Woman(Person):
def print_age(lf):
怀孕不能吃
两个a型血的人生的孩子什么血型print("Ms. %s's age is %s" %(lf.name, lf.age))
五大体系
def person_age(person):
person.print_age()
诲组词
person = Person("kevin", 23)
man = Man("Bob", 33)
woman = Woman("Lily", 28)
person_age(person)
person_age(man)
person_age(woman)
以上代码执⾏结果如下:kevin's age is 23
Mr. Bob's age is 33
Ms. Lily's age is 28
在以上代码中函数 person_age 函数的输⼊参数为类 Person 的实例,但是在实际执⾏过程中 Person 的⼦类 Man 和 Woman 的⽰例同样可以在 person_age 函数中正常运⾏,这既是类的多态的作⽤。实际上任何实现了函数 print_age 函数的类均可作为 person_age 函数的参数且能够正常⼯作,这既是
前⾯提到的「鸭⼦类型」。