Python 高级编程技巧——深入类和对象

Python 高级编程技巧1 深入类和对象1.1 鸭子类型与多态鸭子类型多态的概念四运用于Java 和 C# 这一类型语言中,而Python 崇尚鸭子类型。a=[1,2]b=[3,4]c=[5,6]d=['abc']a.extend(b)a.extend(c)a.extend(d)print(a)class Cat(object): def info(self): print('i am cat')class Dog(object): de
摘要由CSDN通过智能技术生成

1 深入类和对象

1.1 鸭子类型与多态

鸭子类型

  • 多态的概念四运用于Java 和 C# 这一类型语言中,而Python 崇尚鸭子类型。
a=[1,2]
b=[3,4]
c=[5,6]
d=['abc']
a.extend(b)
a.extend(c)
a.extend(d)
print(a)

class Cat(object):
    def info(self):
        print('i am cat')

class Dog(object):
    def info(self):
        print('i am dog')

class Duck(object):
    def info(self):
        print('i am duck')

animal_list=[Cat,Dog,Duck]
for animal in animal_list:
    animal().info()
  • 鸭子类型 在运行之前,Cat Dog 都是在列表里面,当作变量。
  • 当运行时,加上 () 调用info 才明确 Cat 是一个类。

多态

  • 定义时的类型和运行时的类型不一致,就称为多态

1.2 抽象基类(abc模块)

  • 抽象基类(abstract base class ABC):抽象基类就是类定义了纯虚成员函数的类,纯虚函数只提供了接口,并没有具体实现·,抽象基类不能被实例化(不能创建对象),通常是作为基类供子类继承,子类中重写虚函数,实现具体的接口。
  • 抽象基类就是定义各种方法而不做具体实现的类,任何继承自抽象其类的类必须实现这些方法,否则无法实例化。

抽象基应用场景

  • 我们去检查某个类中是否有某种方法
  • 我们需要强调某个子类必须实现某些方法

检查某个类中是否有某种方法

  • 定义Demo类,类中含有__len__魔法方法
  • 导入抽象基类中的 Sized 类
class Demo(object):
    def __init__(self,li):
        self.li=li

    def __len__(self):
        return len(self.li)

l=['C','凌云','九折'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值