Python类(四)-多态

多态即一个接口,多种实现

按照平常直接调用

# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR"

class Person(object):
    def __init__(self,name):
        self.name = name

class Student(Person):
    def talk(self):
        print(‘%s is studying‘%self.name)

class Teacher(Person):
    def talk(self):
        print(‘%s is teaching‘%self.name)

if __name__ == ‘__main__‘:
    Student(‘John‘).talk()
    Teacher(‘Jane‘).talk()

通过定义函数来实现多态

# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR"

class Person(object):
    def __init__(self,name):
        self.name = name

class Student(Person):
    def talk(self):
        print(‘%s is studying‘%self.name)

class Teacher(Person):
    def talk(self):
        print(‘%s is teaching‘%self.name)

def Person_Talk(n):
    n.talk()

if __name__ == ‘__main__‘:
    s = Student(‘John‘)
    t = Teacher(‘Jane‘)
    Person_Talk(s)
    Person_Talk(t)

通过父类调用来实现多态

# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR"

class Person(object):
    def __init__(self,name):
        self.name = name

    @staticmethod
    def Person_Talk(n):
        n.talk()

class Student(Person):
    def talk(self):
        print(‘%s is studying‘%self.name)

class Teacher(Person):
    def talk(self):
        print(‘%s is teaching‘%self.name)

if __name__ == ‘__main__‘:
    s = Student(‘John‘)
    t = Teacher(‘Jane‘)
    Person.Person_Talk(s)
    Person.Person_Talk(t)

原文地址:https://www.cnblogs.com/sch01ar/p/8361826.html

时间: 2024-09-30 21:47:17

Python类(四)-多态的相关文章

python类的多态、多态性

多态:多态指的是一类事物有多种形态 多态性: class Animal: def run(self): raise AtrributeError("子类必须实现这种方法") class Person(Animal): pass p = Person() p.run() 通过父类主动抛出一个异常,告诉你子类中必须自己要写这个方法 改子类如下 class Person(Animal): def run(self): print("人跑") 再定义几个子类 def Dog

python 类 四 : 类的继承与覆盖父类方法

python 继承,子类可以覆盖父类的各种方法,包括__init__方法. 如果要覆盖父类的__init__方法,且希望在覆盖的方法中引用父类的__init__方法,比如在父类的__init__方法的基础上增加一些属性的设置或者其他. 则需要显示的引用父类的方法,否则,父类的方法不会被直接调用到的. 比如: #coding:utf-8 # c继承了p,并实现了自己的__init__方法,也就是重新实现了__init__方法,但为了减少代码冗余 # c在自己的__init__方法里面引用了p的__

Python类(四)-反射

反射即通过字符串映射或修改程序运行时的状态.属性.方法 有4个方法: hasattr(): hasattr(object,string):object为实例化的对象,string为字符串 判断对象object里是否有对应字符串string的方法或属性,返回布尔型 # -*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" class Person(object): def __init__(self,name): self.name = nam

python开发面向对象基础:接口类&抽象类&多态&多继承

一,接口类 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数名)且并未实现接口的功能,子类继承接口类,并且实现接口中的功能 开发中容易出现的问题 1 class Alipay: 2 ''' 3 支付宝支付 4 ''' 5 def pay(self,money): 6 print('支付宝支付了%s元'%money) 7 8 class Applepay: 9 ''' 1

python类的继承和多态

python类的继承和多态 现在属于是老年人的脑子,东西写着写着就忘了,东西记着记着就不知道了.之前学C++的时候就把类.对象这块弄得乱七八糟,现在是因为很想玩python,所以就看看python的类和对象. 就像说的,类有三个特征:封装.继承.多态. 1.封装:类封装了一些方法,可通过一定的规则约定方法进行访问权限. C++中的成员变量有public.private.ptotected. 在python中,默认的成员变量都是public的,如果成员变量前面是加两个下划线,表示该成员变量是私有的

Python 【类的多态】

一.多态 #类的多态 class Animal(object): #Animal类继承object def __init__(self,color): self.color = color def eat(self): print("动物在吃!") def run(self): print("动物在跑") class Cat(Animal): #Cat继承Aninal 继承[属性和方法] def eat(self): #方法重名 print("猫仔!&qu

python类及其方法

python类及其方法 一.介绍 在 Python 中,面向对象编程主要有两个主题,就是类和类实例类与实例:类与实例相互关联着:类是对象的定义,而实例是"真正的实物",它存放了类中所定义的对象的具体信息. 类有这样一些的优点: 1.类对象是多态的:也就是多种形态,这意味着我们可以对不同的类对象使用同样的操作方法,而不需要额外写代码. 2.类的封装:封装之后,可以直接调用类的对象,来操作内部的一些类方法,不需要让使用者看到代码工作的细节. 3.类的继承:类可以从其它类或者元类中继承它们的

python类的相关知识第二部分

类的继承.多态.封装 一.类的继承 1.应用场景: 类大部分功能相同,大类包含小类的情况 例如: 动物类 共性:都要吃喝拉撒.都有头有脚 特性: 猫类.走了很轻,叫声特别,喜欢白天睡觉 狗类.的叫声很大,晚上睡觉 2.继承顺序 在python2版本中多重继承有分两种继承循序 (1).一直往上找 .找到最高级的父类再重另外一个分支找,直到找到为止. (2).一直往上找,找到最高级父类的下一层后就不找了.从另外一个分支找,另外一个分支没找到最后才找最高级的父类. 再python3中只有第一种继承循序

Python基础:Python类(真累~)

类的声明: 一.类的属性 (私有属性和公有属性) (类属性) 二.类的方法 (构造方法.析构方法.自定义方法.特殊成员方法) (静态方法.类方法.类属性) 三.类的继承 (方法和属性的继承,方法的重构) (抽象类,多重继承) 四.类的多态 (实现接口的重用) 五.类的特殊装饰 (@staticmethod.@classmethod.@property) 六.类的来源和原类(metaclass) 七.反射 类的声明 使用class声明类,建议类名单词首字母大写. "新式类"和"