子类别清单

如果您坚持,则可以将列表子类化:

class ListContainer(list):

def play(self, *args, **kwargs):

for item in self:

item.play(*args, **kwargs)

def close(self, *args, **kwargs):

for item in self:

item.close(*args, **kwargs)

(顺便说一句,您将传递给容器方法的所有内容,都会传递给每个项目,除非发生错误)

那样工作:

>>> class Sound(object):

def __init__(self, name):

self.name = name

def play(self):

print('Playing %s' % (self.name,))

def close(self):

print('Closing %s' % (self.name,))

>>> container = ListContainer([Sound('a'), Sound('b'), Sound('c')])

>>> container.play()

Playing a

Playing b

Playing c

>>> container.close()

Closing a

Closing b

Closing c

更好的解决方案

但是你不应该.更好的解决方案是显式地执行此操作:

container = [a, b, c]

# ...

for item in container:

item.play()

请记住,显式胜于隐式.这就是为什么通常最好遍历各个项目并一一称呼它们.

更糟糕的解决方案

如果要隐式调用列表项的方法,则有一种方法;)下面是首先搜索列表属性的实现,如果未找到,将假定它是一种方法并将调用列表中的每个项:

class BadImplicitContainer(list):

def __getattr__(self, name):

def _wrapper(*args, **kwargs):

for item in self:

getattr(item, name)(*args, **kwargs)

return _wrapper

这就是以前片段示例中的行为:

>>> container = BadImplicitContainer([Sound('bad'), Sound('Bad'), Sound('BAD')])

>>> container.play()

Playing bad

Playing Bad

Playing BAD

python列表_Python列表抽象相关推荐

  1. python列表切片后得到剩余列表_python列表切片和嵌套列表取值操作详解

    python列表切片和嵌套列表取值操作详解 给出列表切片的格式: [开头元素::步长] # 输出直到最后一个元素,(最后一个冒号和步长可以省略,下同) [开头元素:结尾元素(不含):步长] # 其中, ...

  2. python向空列表添加列表_Python列表核心知识点汇总

    千里之行,始于足下.要练成一双洞悉一切的眼睛,还是得先把基本功扎扎实实地学好.今天带大家仔细温习一下Python的列表.温故而知新,不亦说乎. 当然,温习的同时也要发散思考,因为有些看似无关紧要的.约 ...

  3. python字符串转化列表_Python列表到字符串的转换

    python字符串转化列表 Sometimes we want to convert the list to a string so that we can print it or log it fo ...

  4. python追加_python列表追加

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 创建一个字符列表,执行命令 l1=print(l1)print(l1)print ...

  5. python已知有列表_python 列表常用方法

    1.在列表末尾添加新的对象 1 li=[11,22,33,'aa','bb','cc'] 2 li.append('dd') 3 print(li) 2.清空列表 1 li=[11,22,33,'aa ...

  6. python如何建立列表_python列表的用法

    1.什么是列表 1.列表是一种容器(用来存储数据对象) 2.列表能够存储多个数据对象 - 序列 3.列表是一个可变序列 4.列表中的数据元素们会有先后顺序 2.创建列表的方式 1.使用字面值的方式创建 ...

  7. .net网格怎么把值插入指定列表_Python列表有什么内置函数可以使用,怎么使用这些函数...

    序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字(它的位置,或索引,第一个索引是0,第二个索引是1,依此类推.) ​ Python序列的列表是最常用的Python数据类型.所以很多 ...

  8. python总结字典集合列表_python 列表,元组,字典,集合,字符串相互转换

    本文主要介绍列表,元组,字典,集合以及和字符串之间的相互转换. 1. 列表与元组的互换 # 将列表转化为元组 li = [1, 2, 3] t = tuple(li) print(t, type(t) ...

  9. python相关函数_python列表相关函数

    1.python中可用于列表的函数 (1)cmp(list1, list2) 比较两个列表的元素 (2)len(list) 列表元素个数 (3)max(list) 返回列表元素最大值 (4)min(l ...

最新文章

  1. 前端 ----jQuery的动画效果
  2. Flutter开发之布局-1-Column(15)
  3. 十八、数据容器、数据访问宽度、端口(计算机对数据处理方式:读取、写入、运算;数据可存放三个地方:CPU内部、内存、端口)
  4. “老年”程序员带你用Python玩街霸,你的童年用编程实现也很简单
  5. 训练自己的数据_PyTorch版CenterNet训练自己的数据集
  6. npm 报错 Module build failed: Error: No PostCSS Config found in:
  7. 图解 Scala 基本语法 V2018.12.17
  8. comps电磁场模拟软件_opera电磁仿真软件
  9. 火狐扩展下载失败_Firefox中扩展程序和主题安装失败的解决方法
  10. python解决八数码问题_python八数码
  11. 安全标准ISO 17799/27001
  12. 事件委托(事件代理)是什么?有什么用?
  13. 逆元 阶乘逆元 数论 HDU 5651 xiaoxin juju needs help
  14. 更改浏览器默认的网址
  15. 【浅谈电商】如何防止重复支付
  16. Error evaluating ORM mappings block for domain
  17. 财宝通告诉你如何利用网络POS机及时到账功能养卡
  18. 【Windows Server 2019】DNS服务器的配置与管理——DNS正向解析
  19. element ui table实现考勤排班表
  20. (05)2020-12-07(选择器)

热门文章

  1. 日常撕逼:React和Vue到底谁更牛?
  2. mysql根据已有表创建新表_SQL根据现有表新建一张表
  3. m 文件 dll matlab 中调用_利用USO服务将特权文件写入武器化
  4. 新鲜出炉 | 临床基因组学数据分析实战开课啦!!!
  5. 抖音张一鸣:我的大学四年收获及工作感悟
  6. 你的数据也可以-三篇NAR的数据库
  7. 赠你一只金色的眼 - 富集分析和表达数据可视化
  8. Mac剪切板神器——Clipsy「记住999条剪贴板记录」
  9. mathmagic pro mac使用教程|快速地创建任何方程
  10. mac os 开启redis_高并发大流量,总会想到它!来一起通过docker搭建redis集群