Python面向对象特殊成员


Posted in Python onApril 24, 2017

类的特殊成员之call

#!/usr/bin/env python
# _*_coding:utf-8 _*_
class SpecialMembers:
  # 类的构造方法
  def __init__(self):
    print("My Blog is Url: http://yw666.blog.51cto.com")
  # 对象的构造方法
  def __call__(self):
    print("My Name is: Yangwen")
# 创建一个对象,并且执行类的构造方法
obj = SpecialMembers()
# 执行对象的构造方法
obj()
# 先执行类的构造方法,然后在执行对象的构造方法
SpecialMembers()()

输出

yangwen@Darker:~$ python3 /home/yangwen/文档/Python_code/sublime/Week06/Day04/s2.py
My Blog is Url: http://yw666.blog.51cto.com
My Name is: Yangwen
My Blog is Url: http://yw666.blog.51cto.com
My Name is: Yangwen

类的特殊成员之getitem、setitem、delitem

#!/usr/bin/env python
# _*_coding:utf-8 _*_
class SpecialMembers:
  # 当执行obj['value']的时候就会自动执行__getitem__方法,并且把对象括号内的值当做__getitem__的值
  def __getitem__(self, item):
    print(item)
  def __setitem__(self, key, value):
    print(key, value)
  def __delitem__(self, key):
    print(key)
# 创建一个对象
obj = SpecialMembers()
# 自动执行__getitem__方法
obj['value']
# 自动执行__setitem__方法
obj['k1'] = "values"
# 自动执行__delitem__方法
del obj['key']

输出

ansheng@Darker:~$ python3 /home/yangwen/文档/Python_code/sublime/Week06/Day04/s2.py
value
k1 values
key

特殊的

#!/usr/bin/env python
# _*_coding:utf-8 _*_
class SpecialMembers:
  # 当执行obj['value']的时候就会自动执行__getitem__方法,并且把对象括号内的值当做__getitem__的值
  def __getitem__(self, item):
    print(item, type(item), "__getitem__")
  def __setitem__(self, key, value):
    print(key, value)
  def __delitem__(self, key):
    print(key)
# 创建一个对象
obj = SpecialMembers()
# 自动执行__getitem__方法
obj[1:3] # __getslice__/__getitem__
# 自动执行__setitem__方法
obj[1:3] = [11, 22, 33] # __setslice__/__setitem__
# 自动执行__delitem__
del obj[1:3] # __delslice__/__delitem__

输出

yangwen@Darker:~$ python3 /home/yangwen/文档/Python_code/sublime/Week06/Day04/s2.py
slice(1, 3, None) <class 'slice'> __getitem__
slice(1, 3, None) [11, 22, 33]
slice(1, 3, None)

类的特殊成员之dict

获取类或对象中的所有成员

#!/usr/bin/env python
# _*_coding:utf-8 _*_
class SpecialMembers:
  """
  类的注释
  """
  def __init__(self):
    self.Name = "Ansheng"
    self.Blog = "http://yw666.blog.51cto.com"
# 获取类中的成员
print(SpecialMembers.__dict__)
# 创建一个对象
obj = SpecialMembers()
# 获取对象中的成员
print(obj.__dict__)

输出

yangwen@Darker:~$ python3 /home/yangwen/文档/Python_code/sublime/Week06/Day04/s2.py
{'__weakref__': <attribute '__weakref__' of 'SpecialMembers' objects>, '__doc__': '\n  类的注释\n  ', '__module__': '__main__', '__dict__': <attribute '__dict__' of 'SpecialMembers' objects>, '__init__': <function SpecialMembers.__init__ at 0x7ff2af2d7598>}
{'Blog': 'http://yw666.blog.51cto.com', 'Name': 'Yangwen'}

类的特殊成员之iter

一个对象如果可以被for循环迭代时,说明对象中又__iter__方法,且方法中有yield值。

#!/usr/bin/env python
# _*_coding:utf-8 _*_
class SpecialMembers:
  def __iter__(self):
    yield 1
    yield 2
    yield 3
# 创建一个对象
obj = SpecialMembers()
# 如果执行for循环对象时,自动会执行对象的__iter__方法,此时的__iter__就是一个生成器
for i in obj:
  print(i)

输出

yangwen@Darker:~$ python3 /home/yangwen/文档/Python_code/sublime/Week06/Day04/s2.py
1
2
3

以上所述是小编给大家介绍的Python面向对象特殊成员,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python编程实现双链表,栈,队列及二叉树的方法示例
Nov 01 Python
Python基于hashlib模块的文件MD5一致性加密验证示例
Feb 10 Python
python实现读Excel写入.txt的方法
Apr 29 Python
python视频按帧截取图片工具
Jul 23 Python
10分钟教你用python动画演示深度优先算法搜寻逃出迷宫的路径
Aug 12 Python
Numpy 中的矩阵求逆实例
Aug 26 Python
使用OpenCV实现仿射变换—缩放功能
Aug 29 Python
opencv resize图片为正方形尺寸的实现方法
Dec 26 Python
解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
Apr 13 Python
python与idea的集成的实现
Nov 20 Python
聊聊Python中关于a=[[]]*3的反思
Jun 02 Python
python调用ffmpeg命令行工具便捷操作视频示例实现过程
Nov 01 Python
Python解惑之整数比较详解
Apr 24 #Python
Python解惑之True和False详解
Apr 24 #Python
Python新手入门最容易犯的错误总结
Apr 24 #Python
Python正则抓取新闻标题和链接的方法示例
Apr 24 #Python
Python的爬虫框架scrapy用21行代码写一个爬虫
Apr 24 #Python
fastcgi文件读取漏洞之python扫描脚本
Apr 23 #Python
批量获取及验证HTTP代理的Python脚本
Apr 23 #Python
You might like
php中对xml读取的相关函数的介绍一
2008/06/05 PHP
PHP MySQL应用中使用XOR运算加密算法分享
2011/08/28 PHP
php+html5实现无刷新图片上传教程
2016/01/22 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
如何判断图片地址是否失效
2007/02/02 Javascript
基于jQuery的一个扩展form序列化到json对象
2010/12/09 Javascript
解决IE6的PNG透明JS插件使用介绍
2013/04/17 Javascript
node+express+jade制作简单网站指南
2014/11/26 Javascript
javascript实现简单的分页特效
2015/08/12 Javascript
JS控制伪元素的方法汇总
2016/04/06 Javascript
js显示动态时间的方法详解
2016/08/20 Javascript
微信小程序 Toast自定义实例详解
2017/01/20 Javascript
基于jQuery封装的分页组件
2017/06/26 jQuery
JavaScript实现的搜索及高亮显示功能示例
2017/08/14 Javascript
jQuery实现的五星点评功能【案例】
2019/02/18 jQuery
150行Node.js实现的dns代理工具
2019/08/02 Javascript
VUE写一个简单的表格实例
2019/08/06 Javascript
小谈angular ng deploy的实现
2020/04/07 Javascript
解决vue.js中settimeout遇到的问题(时间参数短效果不稳定)
2020/07/21 Javascript
python实现一个函数版的名片管理系统过程解析
2019/08/27 Python
Python 读取WAV音频文件 画频谱的实例
2020/03/14 Python
python sitk.show()与imageJ结合使用常见的问题
2020/04/20 Python
纽约JewelryAffairs珠宝店:精细金银时尚首饰
2017/02/05 全球购物
德国BA保镖药房韩文网:kr.ba.de
2017/09/04 全球购物
意大利网上药房:Farmacia 33
2020/01/27 全球购物
如何进行Linux分区优化
2013/02/12 面试题
法雷奥SQA(electric)面试问题
2016/01/23 面试题
小学生美德少年事迹
2014/02/02 职场文书
房屋出租委托书格式
2014/09/23 职场文书
第28个世界无烟日活动总结
2015/02/10 职场文书
公司财务经理岗位职责
2015/04/08 职场文书
2016年第29个世界无烟日宣传活动总结
2016/04/06 职场文书
Linux中Nginx的防盗链和优化的实现代码
2021/06/20 Servers
Spring Security中用JWT退出登录时遇到的坑
2021/10/16 Java/Android
Java 数据结构七大排序使用分析
2022/04/02 Java/Android
Redis实现一个账号只能登录一个设备
2022/04/19 Redis