python-类的多态

#conding: utf-8
'''
多态的两大要素
1. 继承
2. 方法重写
'''

class Programer(object):                     #定义了一个Programer类
    hobby = "Play Computer"                 #在类里面直接定义一个属性hobby

    def __init__(self, name, age, weight):   #在构造函数里面定义了三个属性
        self.name = name
        self._age = age
        self.__weight = weight

    @classmethod               #方法的装饰器;调用的时候直接用类名,而不是某个对象
    def get_hobby(cls):
        return cls.hobby

    @property                  #方法的装饰器;像访问属性一样调用方法
    def get_weight(self):
        return self.__weight

    def self_introduction(self):
        print('My name is %s \nI am %s years old\n' % (self.name, self._age))


#类的继承
class BackendProgramer(Programer):                #定义一个BackendProgramer类,继承了Programer类

    #对构造函数进行了修改,多出一个language属性,使用super调用了BackendProgramer父类的构造函数,将language属性进行了赋值
    def __init__(self,name, age, weight, language):                 #构造函数多出一个language属性
        super(BackendProgramer, self).__init__(name, age, weight)   #使用super调用了BackendProgramer父类的构造函数
        self.language = language                                    #将language属性进行了赋值

    def self_introduction(self):             #重写父类里self_introduction这个方法,将输出稍微做了修改
        print('My name is %s \nMy favorite language is %s' % (self.name, self.language))


def introduce(programer):                     #定义了一个introduce函数
    if isinstance(programer, Programer):      #判断传进来的这个参数是不是属于Programer这个对象
        programer.self_introduction()         #如果判断是Programer这个对象,就直接调用这个对象的self_introduction方法

'''
因为多态的特性,使得在添加功能的时候非常简单。
只要判断一下它是不是属于它的父类,就可以不管它具体传进来的是哪个子类,就可以去调用这个方法
'''

if __name__ == '__main__':
    programer = Programer('Jodie', 25, 80)                          #将Programer这个类进行实例化
    backend_programer = BackendProgramer('RJ', 18, 90, 'Python')    #将BackendProgramer这个类进行实例化
    introduce(programer)                #用introduce这个函数来调用self_introduction方法
    introduce(backend_programer)        #用introduce这个函数来调用self_introduction方法



-------------------------------
运行后的打印结果:

D:\Jodie2019\venv\Scripts\python.exe D:/Jodie2019/study/study7类的多态.py
My name is Jodie 
I am 25 years old

My name is RJ 
My favorite language is Python

Process finished with exit code 0

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值