我一直在深入研究Python类中的运算符重载和特殊方法,并且我注意到许多内置函数具有等效的特殊方法名称:

> int(x)调用x .__ int __()

> next(x)在Python 2中调用x .__ next __()或x.next()

但是,一些函数,即tuple()和dict(),没有任何等价物.我知道对于这种特殊方法尚未出现这种需要,但在某些情况下,调用类的dict()转换方法可能很有用.我该如何实现呢?或者,对于试图使用这种逻辑的人,您会怎么说?

# I think this is quite interesting, so I shall post my own implementation of it as well

解决方法:

选项1:__iter__

转换为元组或字典,或任何采用迭代的类型,都依赖于__iter__方法.

class ListOfKeys():

def __init__(self, lst):

self.lst = lst

def __iter__(self):

for k in self.lst:

yield (k, None)

lok = ListOfKeys([1, 2, 3])

d = dict(lok)

print(d) # {1: None, 2: None, 3: None}

这同样适用于元组.

t = tuple(lok)

print(t) # ((1, None), (2, None), (3, None))

选项2:键和__getitem__

或者,要转换为dict,您可以实现两个键和__getitem__.

class ListOfKeys():

def __init__(self, lst):

self.lst = lst

def keys(self):

yield from self.lst

def __getitem__(self, item):

return None

lok = ListOfKeys([1, 2, 3])

d = dict(lok)

print(d) # {1: None, 2: None, 3: None}

选项3:两者都支持多种类型

最后,如果您希望您的类具有不同的行为以转换为dict和元组,则以下示例演示dict将优先考虑键和__getitem__解决方案.

class Foo:

def __iter__(self):

yield 1

def keys(self):

yield 2

def __getitem__(self, item):

return 3

print(dict(Foo())) # {2: 3}

print(tuple(Foo())) # (1,)

标签:python,python-3-x,class,function,oop

来源: https://codeday.me/bug/20190828/1746542.html

python字典的内置函数_python – 用于字典转换的特殊方法名称的内置函数相关推荐

  1. [转载] [转载] python 去除字符串的标点符号 用_Python成为专业人士笔记–String字符串方法

    参考链接: Python字符串| 十六进制 hexdigits 参考链接: Python的字符串Strings decode "专业人士笔记"系列目录: 创帆云:Python成为专 ...

  2. [转载] python 去除字符串的标点符号 用_Python成为专业人士笔记–String字符串方法

    参考链接: Python的字符串Strings decode "专业人士笔记"系列目录: 创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!​zhuanlan.z ...

  3. SQL语句行列转换两种方法 case ...when 和pivot函数应用

    2019独角兽企业重金招聘Python工程师标准>>> SQL语句行列转换两种方法 case ...when 和pivot函数应用SQL语句行列转换两种方法 case ...when ...

  4. python内置数字类型转换函数_Python学习 Day2-2 Python3的基本数据类型、数据内置类型转换函数...

    Python3的基本数据类型 Python 中的变量不需要声明.每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 在 Python 中,变量就是变量,它没有类型,我们所说的"类型& ...

  5. python 常用内置函数_Python小白必备的8个最常用的内置函数(推荐)

    Python给我们内置了大量功能函数,官方文档上列出了69个,有些是我们是平时开发中经常遇到的,也有一些函数很少被用到,这里列举被开发者使用最频繁的8个函数以及他们的详细用法 print() prin ...

  6. python修改列表中字典内的值_python修改字典内key对应值的方法

    python学习笔记:字典 python版本:Python 2.6.6 系统环境:CentOS release 6.2 x86_64 本文参考了互联网上前辈的一些文章 一.字典是python中最灵活的 ...

  7. python setdefault函数_python中字典中的赋值技巧,update批量更新、比较setdefault方法与等于赋值...

    知识回顾: 之前这节主要学习了字典的删除,主要涉及到两个方法: 1. Pop方法:删除指定的键的键值对.需要指定一个自己已知的键,删除后返回的是键对应的值. 2. Popitem方法:删除的是最后一个 ...

  8. python拷贝文件函数_python笔记2小数据池,深浅copy,文件操作及函数初级

    小数据池就是在内存中已经开辟了一些特定的数据,经一些变量名直接指向这个内存,多个变量间公用一个内存的数据. int: -5 ~ 256 范围之内 str: 满足一定得规则的字符串. 小数据池: 1,节 ...

  9. python导入自己写的函数_Python导入模块的几种方法

    Python 模块 Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块让你能够有逻辑地组织你的 Python 代 ...

最新文章

  1. Flask学习之路(一)--初识flask
  2. linux发行版 以及 包管理方式
  3. python每隔2s执行一次hello world!
  4. 虫洞协议和闪电网络如何混为一谈?
  5. perl5 第九章 关联数组/哈希表
  6. 如何通过网络连接进行ADB调试
  7. docker compose 在单机环境下一键打包运行
  8. 16个简单实用的.htaccess技巧
  9. 3d文件与html结合,js和HTML5怎么结合?
  10. 带你梳理Roach全量恢复的整体流程
  11. Parts of a URL
  12. vue + vant 使用阿里图标库
  13. DFS----深度优先搜索与记忆化数组例题分析
  14. html好看的详情页面设计,40多个漂亮的网页表单设计实例
  15. 用药安全,从娃娃抓起
  16. 惠不停返利网:掀起购物返利高潮
  17. 高度可定制可用于商用目的全流程供应链系统(全部源码)
  18. Unity3D FPS射击游戏
  19. unity碰撞检测的几种函数
  20. Windows安装RabbitMQ

热门文章

  1. 从Kubernetes安全地访问AWS服务,告诉你多云场景下如何管理云凭据!
  2. 以人为本、用“简”驭“繁”……统统都是新华三物联网的关键词儿!
  3. php error_get_last(),PHP捕获异常register_shutdown_function和error_get_last的使用
  4. python 下载图片到内存卡_python - 获取图像大小而不将图像加载到内存中
  5. linux bash环境,Win10系统怎样启用Linux Bash环境
  6. pyside2 镜像安装_pyside2 镜像安装_【PySide2学习笔记】0_下载安装
  7. android 模拟器声音设置,使用android模拟器录制声音
  8. nginx(windows环境安装)
  9. 开发经验分享_05_葫芦画瓢
  10. The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone.