•        Python : 3.7.0
  •          OS : Ubuntu 18.04.1 LTS
  •         IDE : PyCharm 2018.2.4
  •       Conda : 4.5.11
  •    typesetting : Markdown

code

"""
@Author : 行初心
@Date : 18-9-23
@Blog : www.cnblogs.com/xingchuxin
@Gitee : gitee.com/zhichengjiu
""" # 定义一个不可变的序列,需要定义两个方法
# 1 __len__(self)
# 2 __getitem__(self,key)
class MyList:
def __init__(self, *args):
# 列表推导式,很好用
self.values = [x for x in args]
# 生成一个下标为key,值全为0的字典。可以记录访问次数
self.count = {}.fromkeys(range(len(self.values)), 0) def __len__(self):
# 当使用len函数的时候,会调用这个
print('容器的长度是:')
return len(self.values) def __getitem__(self, key):
# 当用索引来访问元素的时候,会使用这个函数
self.count[key] += 1
return self.values[key] def main():
test = MyList(1, 2, 3, 4, 5, 6, 7)
print(test.count) print(test[1]) print(test.count) print(len(test)) if __name__ == '__main__':
main()

result

/home/coder/anaconda3/envs/py37/bin/python /home/coder/PycharmProjects/oop/demo.py
{0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0}
2
{0: 0, 1: 1, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0}
容器的长度是:
7 Process finished with exit code 0

resource

  • [文档] docs.python.org/3
  • [规范] www.python.org/dev/peps/pep-0008
  • [规范] zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/python_language_rules
  • [源码] www.python.org/downloads/source
  • [ PEP ] www.python.org/dev/peps
  • [平台] www.cnblogs.com
  • [平台] gitee.com


Python具有开源、跨平台、解释型、交互式等特性,值得学习。

Python的设计哲学:优雅,明确,简单。提倡用一种方法,最好是只有一种方法来做一件事。

代码的书写要遵守规范,这样有助于沟通和理解。

每种语言都有独特的思想,初学者需要转变思维、踏实践行、坚持积累。

Python3基础 __len__,__getitem__ 记录列表中元素访问的次数 定制不可变序列,下标字典的更多相关文章

  1. Python中用dict统计列表中元素出现的次数

    01 Python增加元素,不像其他语言使用现实的操作接口,只需要dict[1]=3,如果字典中不存在1,则直接新增元素键值对(1,3),如果存在则替换键1为3. if key in dict:判断出 ...

  2. Python3基础 set() 删除一个列表中的重复项

    镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...

  3. Python3基础 print 查看一个列表中存储的所有内容

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  4. Python3基础 list clear 清空列表中的内容

             Python : 3.7.3          OS : Ubuntu 18.04.2 LTS         IDE : pycharm-community-2019.1.3    ...

  5. JAVA实现按列表中元素的时间字段排序

    JAVA代码实现按列表中元素的时间字段排序 导语: 工作中遇到一个问题,调用第三方接口返回的数据没有按时间倒序排列,测试说要加,然后在网上找到一个解决办法,这里记录一下 需求: 如下图列表,按生日进行 ...

  6. #查找列表中元素,移除每个元素的空格,并查找以 a或A开头 并且以 c 结尾的所有元素

    #!/usr/bin/env python #查找列表中元素,移除每个元素的空格,并查找以 a或A开头 并且以 c 结尾的所有元素. #    li = ["alec", &quo ...

  7. python中循环删除列表中元素时的坑!

    循环删除列表中元素时千万别用正序遍历,一定要用反序遍历! 废话不多说,先上案例代码: def test(data): for i in data: data.remove(i) return data ...

  8. python删除列表中元素的方法

    删除列表中元素的三种方法-remove.pop.del 1 1.remove: 删除单个元素,删除首个符合条件的元素,按值删除 2 举例说明: 3 >>> str=[1,2,3,4, ...

  9. 布尔上下文,这里misreading返回的是来源列表中元素的个数,如果列表中2个值都是undef,则列表元素个数是1: while( $misreading = (my $test_consideration, my $english_pragma) = each %map_function){

    布尔上下文,这里misreading返回的是来源列表中元素的个数, 列表赋值运算的值将会是来源列表中元素的个数,空列表表示0,如果列表中2个值都是undef,则列表元素个数是1 布尔上下文,这里mis ...

随机推荐

  1. iOS-多语言版本的开发(一)(转载)

    引言  多语言 & 本地化,随你怎么叫,道理差不多:一个App 要想走出国门,只支持一种语言是不能够的,也是不可能的,多元化世界已经融入我们的生活,对于一些应用,开发多语言版本,已经是不可避免 ...

  2. CentOs7 安装最新版的Git

    最近打算研究下Git并投入是用,当然要从安装开始了. 服务器的系统是CenterOs7,这个系统和之前的版本还些使用的不同,慢慢习惯吧. 安装方法有两种: 一.yum命令安装,此方法简单,并且会自动安 ...

  3. 【linux echo -e命令】

    man帮助的解释是,允许后面的输出进行转义,假设你是 echo -e "i will use \n $HOME" 输出的将是i will use/root(当前用户的主目录)如果是 ...

  4. CF573C Bear and Drawing 构造+树论

    正解:构造 解题报告: 传送门! 这题首先可以画下图找下规律,,,然后通过找规律可以发现,最终的方案一定是一条主干+一些枝条,而且这些枝条的分杈一定小于等于2 明确一下主干的定义,最左边的节点和最右边 ...

  5. 简单利用gulp-babel搭建es6转es5环境

    es6是什么?借着这个话题,我想说:身为web前端的工作者连es6没听说,转行吧. demo的代码如下: 源码下载 或者 gitclone地址: git@git.oschina.net:sisheb/ ...

  6. 高性能MySQL中的三星索引

    高性能MySQL中的三星索引 我对此提出了深深的疑问: 一星:相关的记录指的是什么??(相关这个词很深奥,“相关部门”是什么部门) 二星:如果建立了B-Tree(B+Tree)索引,数据就有序了.三星 ...

  7. vertx打成jar包发布工程,访问静态页面

    1:添加pom依赖,配置打包插件 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="htt ...

  8. CentOS6.7上安装Mysql5.7

    CentOS6.7上安装Mysql5.7 2017年07月22日 18:27:05 阅读数:564 环境的配置总是令人作呕,所以这次表明版本条件: 首先,这是一台新机器 其次,CentOS版本如下: ...

  9. Ants-穷举算法

    package java操作excel; import java.util.Scanner; /** * Ants * n只蚂蚁以每秒1cm的速度在长为Lcm的竿子上爬行,当蚂蚁爬到端点就会掉下去,竿 ...

  10. linux 统计wc

    说明:该命令统计给定文件中的字节数.字数.行数.如果没有给出文件名,则从标准输入读取.wc同时也给出所有指定文件的总统计数.字是由空格字符区分开的最大字符串. 该命令各选项含义如下: - c 统计字节 ...