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的装饰器的运用
May 05 Python
python机器学习之神经网络(二)
Dec 20 Python
Python之ReportLab绘制条形码和二维码的实例
Jan 15 Python
基于python的多进程共享变量正确打开方式
Apr 28 Python
python3使用smtplib实现发送邮件功能
May 22 Python
Python File(文件) 方法整理
Feb 18 Python
Python 中Django验证码功能的实现代码
Jun 20 Python
Django REST framework 视图和路由详解
Jul 19 Python
python3.7 利用函数os pandas利用excel对文件名进行归类
Sep 29 Python
一些关于python 装饰器的个人理解
Aug 31 Python
python3 os进行嵌套操作的实例讲解
Nov 19 Python
解决Python import .pyd 可能遇到路径的问题
Mar 04 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
根据ip调用新浪api获取城市名并转成拼音
2014/03/07 PHP
php处理复杂xml数据示例
2016/07/11 PHP
一个加密JavaScript的开源工具PACKER2.0.2
2006/11/04 Javascript
javascript学习笔记(十一) 正则表达式介绍
2012/06/20 Javascript
jQuery制作拼图小游戏
2015/01/12 Javascript
jQuery插件实现大图全屏图片相册
2015/03/14 Javascript
javascript实现获取浏览器版本、浏览器类型
2015/12/02 Javascript
手机端 HTML5使用photoswipe.js仿微信朋友圈图片放大效果
2016/08/25 Javascript
JavaScript String(字符串)对象的简单实例(推荐)
2016/08/31 Javascript
js前端实现多图图片上传预览的两个方法(推荐)
2016/11/18 Javascript
基于jquery实现二级联动效果
2017/03/30 jQuery
React Native验证码倒计时工具类分享
2017/10/24 Javascript
轻松理解vue的双向数据绑定问题
2017/10/30 Javascript
jQuery解析json格式数据示例
2018/09/01 jQuery
Vue组件的使用及个人理解与介绍
2019/02/09 Javascript
nodejs中各种加密算法的实现详解
2019/07/11 NodeJs
弱类型语言javascript开发中的一些坑实例小结【变量、函数、数组、对象、作用域等】
2019/08/07 Javascript
新手该如何学python怎么学好python?
2008/10/07 Python
Python break语句详解
2014/03/11 Python
浅谈Python中copy()方法的使用
2015/05/21 Python
Python 基础教程之包和类的用法
2017/02/23 Python
Python使用numpy实现BP神经网络
2018/03/10 Python
在cmder下安装ipython以及环境的搭建
2018/10/19 Python
利用Python正则表达式过滤敏感词的方法
2019/01/21 Python
python tkinter实现彩球碰撞屏保
2019/07/30 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
2020/01/16 Python
NumPy排序的实现
2020/01/21 Python
python如何导出微信公众号文章方法详解
2020/08/31 Python
纯css3制作煽动翅膀的蝴蝶的示例
2018/04/23 HTML / CSS
乡镇党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
植物园观后感
2015/06/11 职场文书
童年读书笔记
2015/06/26 职场文书
某学校的2019年度工作报告范本
2019/10/11 职场文书
Python基于Tkinter开发一个爬取B站直播弹幕的工具
2021/05/06 Python
Jupyter notebook 不自动弹出网页的解决方案
2021/05/21 Python
码云(gitee)通过git自动同步到阿里云服务器
2022/12/24 Servers