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的迭代器和生成器
Jul 29 Python
Python+PIL实现支付宝AR红包
Feb 09 Python
Python简单实现阿拉伯数字和罗马数字的互相转换功能示例
Apr 17 Python
Python实现获取前100组勾股数的方法示例
May 04 Python
Python系统监控模块psutil功能与经典用法分析
May 24 Python
Django读取Mysql数据并显示在前端的实例
May 27 Python
Python文件读写保存操作的示例代码
Sep 14 Python
Python3爬取英雄联盟英雄皮肤大图实例代码
Nov 14 Python
详解Python3注释知识点
Feb 19 Python
利用Python实现Shp格式向GeoJSON的转换方法
Jul 09 Python
Python如何实现强制数据类型转换
Nov 22 Python
python实现简单聊天功能
Jul 07 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 删除无限级目录与文件代码共享
2008/11/22 PHP
php中Smarty模板初体验
2011/08/08 PHP
PHP中数组的三种排序方法分享
2012/05/07 PHP
php获取textarea的值并处理回车换行的方法
2014/10/20 PHP
php微信开发之百度天气预报
2016/11/18 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/02/09 Javascript
json简单介绍
2008/06/10 Javascript
JQuery 动态扩展对象之另类视角
2010/05/25 Javascript
toggle一个div显示或隐藏且可扩展成自定义下拉框
2013/09/12 Javascript
seaJs的模块定义和模块加载浅析
2014/06/06 Javascript
jQuery中outerWidth()方法用法实例
2015/01/19 Javascript
jQuery动画出现连续触发、滞后反复执行的解决方法
2015/01/28 Javascript
js实现导航栏中英文切换效果
2017/01/16 Javascript
Vue.js实例方法之生命周期详解
2017/07/03 Javascript
原生js添加一个或多个类名的方法分析
2019/07/30 Javascript
Jquery+AJAX实现无刷新上传并重命名文件操作示例【PHP后台接收】
2020/05/29 jQuery
Vue生命周期activated之返回上一页不重新请求数据操作
2020/07/26 Javascript
三剑客:offset、client和scroll还傻傻分不清?
2020/12/04 Javascript
安装dbus-python的简要教程
2015/05/05 Python
Python 单元测试(unittest)的使用小结
2018/11/14 Python
DataFrame:通过SparkSql将scala类转为DataFrame的方法
2019/01/29 Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
2019/01/30 Python
python判断文件夹内是否存在指定后缀文件的实例
2019/06/10 Python
Python shelve模块实现解析
2019/08/28 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
2020/04/07 Python
matplotlib交互式数据光标实现(mplcursors)
2021/01/13 Python
使用javascript和HTML5 Canvas画的四渐变色播放按钮效果
2014/04/10 HTML / CSS
如何在Canvas上的图形/图像绑定事件监听的实现
2020/09/16 HTML / CSS
台湾最大银发乐活百货:乐龄网
2018/05/21 全球购物
香港中原电器网上商店:Chung Yuen
2019/06/26 全球购物
使用C#编写创建一个线程的代码
2013/01/22 面试题
Ajax的优点和缺点
2014/11/21 面试题
企业总经理岗位职责
2014/02/13 职场文书
门卫岗位职责
2015/02/09 职场文书
一篇合格的广告文案,其主要目的是什么?
2019/07/12 职场文书
新手必备之MySQL msi版本下载安装图文详细教程
2021/05/21 MySQL