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 相关文章推荐
Django中URL视图函数的一些高级概念介绍
Jul 20 Python
小议Python中自定义函数的可变参数的使用及注意点
Jun 21 Python
详解python使用递归、尾递归、循环三种方式实现斐波那契数列
Jan 16 Python
python实现冒泡排序算法的两种方法
Mar 10 Python
python3将视频流保存为本地视频文件
Jun 20 Python
解决python opencv无法显示图片的问题
Oct 28 Python
解决vscode python print 输出窗口中文乱码的问题
Dec 03 Python
Python操作Excel插入删除行的方法
Dec 10 Python
Python学习笔记之列表推导式实例分析
Aug 13 Python
Python实现密码薄文件读写操作
Dec 16 Python
flask 框架操作MySQL数据库简单示例
Feb 02 Python
python -v 报错问题的解决方法
Sep 15 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的变量总结 新手推荐
2011/04/18 PHP
CMS中PHP判断系统是否已经安装的方法示例
2014/07/26 PHP
ThinkPHP做文字水印时提示call an undefined function exif_imagetype()解决方法
2014/10/30 PHP
set_exception_handler函数在ThinkPHP中的用法
2014/10/31 PHP
php实现汉字验证码和算式验证码的方法
2015/03/07 PHP
在WordPress中获取数据库字段内容和添加主题设置菜单
2016/01/11 PHP
php中isset与empty函数的困惑与用法分析
2019/07/05 PHP
JavaScript Event学习第七章 事件属性
2010/02/07 Javascript
JavaScript Ajax Json实现上下级下拉框联动效果实例代码
2013/11/23 Javascript
jQuery中$.ajax()和$.getJson()同步处理详解
2015/08/12 Javascript
ThinkJS中如何使用MongoDB的CURD操作
2016/12/13 Javascript
setTimeout学习小结
2017/02/08 Javascript
详解AngularJS脏检查机制及$timeout的妙用
2017/06/19 Javascript
浅谈angular4实际项目搭建总结
2017/12/01 Javascript
使用npm安装最新版本nodejs
2018/01/18 NodeJs
Vue 进阶之路(三)
2019/04/18 Javascript
微信小程序事件对象中e.target和e.currentTarget的区别详解
2019/05/08 Javascript
为nuxt项目写一个面包屑cli工具实现自动生成页面与面包屑配置
2019/09/29 Javascript
[46:47]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS NE
2014/05/22 DOTA
python脚本实现统计日志文件中的ip访问次数代码分享
2014/08/06 Python
Python实现Const详解
2015/01/27 Python
Python装饰器的函数式编程详解
2015/02/27 Python
尝试使用Python多线程抓取代理服务器IP地址的示例
2015/11/09 Python
Python 中的with关键字使用详解
2016/09/11 Python
Python 3.6 读取并操作文件内容的实例
2018/04/23 Python
python使用正则来处理各种匹配问题
2019/12/22 Python
python 实现读取csv数据,分类求和 再写进 csv
2020/05/18 Python
html5 video标签屏蔽右键视频另存为的js代码
2013/11/12 HTML / CSS
ASOS西班牙官网:英国在线时尚和美容零售商
2020/01/10 全球购物
iostream与iostream.h的区别
2015/01/16 面试题
商务英语本科生的自我评价分享
2013/11/15 职场文书
中国文明网签名寄语
2014/01/18 职场文书
保护环境的标语
2014/06/09 职场文书
投标授权委托书范文
2014/08/02 职场文书
2016年师德学习心得体会
2016/01/12 职场文书
Python实战之大鱼吃小鱼游戏的实现
2022/04/01 Python