python多态

什么是多态:

多态指的是一类事物有多种形态。

水有多种形态:液态(水),固态(冰),汽态(水蒸气)

import abc
class WaterType(metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def info(self):
        pass

class Yetai(WaterType):
    def info(self):
        print('我是液态(水)')

class Gutai(WaterType):
    def info(self):
        print('我是固态(冰)')

class Qitai(WaterType):
    def info(self):
        print('我是汽态(水蒸气)')

y = Yetai()
y.info()
g = Gutai()
g.info()
q = Qitai()
q.info()

'''
我是液态(水)
我是固态(冰)
我是汽态(水蒸气)
'''

多态性:

我的理解是:不同的对象执行相同的函数,产生不同的行为。

python 中len()举例:

str1 = 'abcde'
list1 = [1,'a','s',2]
tuple1 = (1,2,3)

# 三个不同的类型执行相同的方法,返回不同的行为
print(str1.__len__())
print(list1.__len__())
print(tuple1.__len__())

多态实现len

class MyObject:
    def __init__(self,data):
        self.data = data

    def lens(self):
        count = 0
        for i in self.data:
            count += 1
        return count

class Str(MyObject):  # 继承父类
    def __init__(self,data):
        super().__init__(data) # 调用父类方法

    def lens(self):
        return super().lens() # 调用父类方法

class List(MyObject):
    def __init__(self,data):
        super().__init__(data)

    def lens(self):
        return super().lens()

class Tuple(MyObject):
    def __init__(self,data):
        super().__init__(data)

    def lens(self):
        return  super().lens()

def len(obj):
    return obj.lens()


s = Str('aaa')
l = List([1,2,3])
t = Tuple((1,2,))

print(len(s))
print(len(l))
print(len(t))

'''
结果:
3
3
2
'''

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值