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列出一个文件夹及其子目录的所有文件
Jun 30 Python
详解Golang 与python中的字符串反转
Jul 21 Python
python中的变量如何开辟内存
Jun 26 Python
详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决
Apr 17 Python
Django处理Ajax发送的Get请求代码详解
Jul 29 Python
Tensorflow训练MNIST手写数字识别模型
Feb 13 Python
Django实现从数据库中获取到的数据转换为dict
Mar 27 Python
python相对企业语言优势在哪
Jun 12 Python
解决TensorFlow调用Keras库函数存在的问题
Jul 06 Python
Django模型验证器介绍与源码分析
Sep 08 Python
python os.listdir()乱码解决方案
Jan 31 Python
Django数据库(SQlite)基本入门使用教程
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
ZF等常用php框架中存在的问题
2008/01/10 PHP
php发送get、post请求的6种方法简明总结
2014/07/08 PHP
功能强大的PHP POST提交数据类
2016/07/15 PHP
IE不出现Flash激活框的小发现的js实现方法
2007/09/07 Javascript
jQuery的实现原理的模拟代码 -5 Ajax
2010/08/07 Javascript
js使用数组判断提交数据是否存在相同数据
2013/11/27 Javascript
jquery实现点击文字可编辑并修改保存至数据库
2014/04/15 Javascript
jquery 隐藏与显示tr标签示例代码
2014/06/06 Javascript
一个支付页面DEMO附截图
2014/07/22 Javascript
不到30行JS代码实现Excel表格的方法
2014/11/15 Javascript
JavaScript中的异常捕捉介绍
2014/12/31 Javascript
JS动态添加Table的TR,TD实现方法
2015/01/28 Javascript
JavaScript 是什么意思
2016/09/22 Javascript
vue 如何添加全局函数或全局变量以及单页面的title设置总结
2017/06/01 Javascript
js学习总结之DOM2兼容处理顺序问题的解决方法
2017/07/27 Javascript
微信页面弹出键盘后iframe内容变空白的解决方案
2017/09/20 Javascript
vue中遇到的坑之变化检测问题(数组相关)
2017/10/13 Javascript
JS动画定时器知识总结
2018/03/23 Javascript
vue webpack打包后图片路径错误的完美解决方法
2018/12/07 Javascript
django中使用vue.js的要点总结
2019/07/07 Javascript
vue-cli 项目打包完成后运行文件路径报错问题
2019/07/19 Javascript
javascript实现动态时钟的启动和停止
2020/07/29 Javascript
Nuxt默认模板、默认布局和自定义错误页面的实现
2020/05/11 Javascript
Python制作词云的方法
2018/01/03 Python
Python爬虫后获取重定向url的两种方法
2021/01/19 Python
利用Canvas模仿百度贴吧客户端loading小球的方法示例
2017/08/13 HTML / CSS
Hotels.com中国区:好订网
2016/08/18 全球购物
保险专业自荐信范文
2014/02/20 职场文书
青安岗事迹材料
2014/05/14 职场文书
房地产营销活动策划方案
2014/09/15 职场文书
婚前财产协议书范本
2014/10/19 职场文书
工伤事故赔偿协议书
2014/10/27 职场文书
鼋头渚导游词
2015/02/05 职场文书
2015年教务主任工作总结
2015/07/22 职场文书
师德培训心得体会2016
2016/01/09 职场文书
Java 使用类型为Object的变量指向任意类型的对象
2022/04/13 Java/Android