Effective Python 读书笔记: 第24条: 以@classmethod形式的多态去通用地构建对象

# -*- encoding: utf-8 -*-

import functools
import os
from threading import Thread

'''
第24条: 以@classmethod形式的多态去通用地构建对象

关键:
1 python类的多态
多态含义: 继承体系的多个类能以自己的方式实现某个方法。
这些类都满足相同的接口但有不同的功能。
局限: python只能有一个__init__构造方法,可以用@classmethod
来初始化类的实例,等同于实现另一种类的__init__方法

2 classmethod
形式:
@classmethod
def fromData(cls, data):
    ......

其中第一个参数是cls,表示类的名称,用于后续创建该类的实例

3 类的多态方法举例
    @classmethod
    def createWorker(cls, inputClass, config):
        workers = []
        # 关键: inputClass.fromData是类级别的多态方法
        for inputData in inputClass.fromData(config):
            workers.append(cls(inputData))
        return workers
分析:
这里在一个类中使用了另一个类的某个方法,我们传入的是类名,
而加入这个类有子类,传入不同的子类,实际是执行不同子类
各自的同名方法,单实现不同的功能,即一个接口,多个功能,
这就是python的多态。

4 总结
1)多态是指一个接口,多种实现。
在C++中可以用类似如下形式实现多态:
ParentClass* pointer = new SubClass1();
......
p
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值