类的特殊成员之call

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

输出

Guniao@Darker:~$ python3 /home/Guniao/文档/Python_code/sublime/Week06/Day04/s2.py
My Blog is Url: http://www.cnblogs.com/sjie0224
My Name is: Guniao My Blog is Url: http://www.cnblogs.com/sjie0224
My Name is: Guniao 

类的特殊成员之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']

输出

Guniao@Darker:~$ python3 /home/Guniao/文档/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__

输出

Guniao@Darker:~$ python3 /home/Guniao/文档/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 = "Guniao"self.Blog = "https://blog.Guniao.me"# 获取类中的成员
print(SpecialMembers.__dict__)# 创建一个对象
obj = SpecialMembers()# 获取对象中的成员
print(obj.__dict__)

输出

Guniao@Darker:~$ python3 /home/Guniao/文档/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': 'https://blog.Guniao.me', 'Name': 'Guniao'} 

类的特殊成员之iter

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

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

输出

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

转载于:https://www.cnblogs.com/sjie0224/articles/7562745.html

Python学习之路-22 (面向对象特殊成员)相关推荐

  1. Python学习之路9☞面向对象的程序设计

    Python学习之路9☞面向对象的程序设计 一 面向对象的程序设计的由来 见概述:http://www.cnblogs.com/linhaifeng/articles/6428835.html 二 什 ...

  2. Python学习之路_day_25(面向对象之封装/多态/组合)

    一.组合 什么是组合: 组合指的是某一个对象拥有一个属性,该属性的值是另外一个类的对象. 2. 为何要用组合 通过为某一个对象添加属性(属性的值是另外一个类的对象)的方式,可以间接地将两个类关联/整合 ...

  3. Python学习之路—2018/6/20

    Python学习之路-2018/6/20 1.模板语法之变量 views.py def index(request):import datetimes="gyq"l=[1,2,3] ...

  4. Python学习之路5☞文件处理

    Python学习之路5☞文件处理 一.文件处理流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 1 正趣果上果 2 Interesting fruit fruit 3 4 ...

  5. python学习之路0x00

    Python学习之路0x00 在学习python之前,要知道什么是python? python是一种跨平台的计算机程序设计语言.是一种面向对象的动态类型语言,与c语言不同, c语言要编译后才能执行.而 ...

  6. 我的Python学习之路(一)_Mr_Ouyang

    我的Python学习之路(一)_Mr_Ouyang 笔者按: 本文从18:55开始写作,至19:38中断,又从21:12始继续,至23:22写就. 共计耗时113分钟,总字数9081字,约80.4字/ ...

  7. Python学习之路【第一篇】-Python简介和基础入门

    1.Python简介 1.1 Python是什么 相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是 ...

  8. python之路 mysql 博客园_教为学:Python学习之路(二):MySQLdb的几种安装方式,以及用Python测试连接MySql...

    教为学:Python学习之路(二):MySQLdb的几种安装方式,以及用Python测试连接MySql Easy_install安装MySQLdb 很简单,以至于我不晓得该怎么说.一句话. sodu ...

  9. Python学习之路—2018/7/14

    Python学习之路-2018/7/12 3.功能开发 3.3 设计博客首页 博客首页中最重要的就是中间的文章区域,所以我首先把文章区域设计出来,一开始并没有数据,如果用orm添加或者直接在数据库添加 ...

  10. python 学习之路开始了

    python 学习之路开始了.....记录点点滴滴.... 转载于:https://www.cnblogs.com/chobit/p/6163287.html

最新文章

  1. noip2018——题解总结
  2. Linux服务器网页显示乱码
  3. 十三五乐山全力推进智慧城市和新能源汽车等项目
  4. EAGLView介绍
  5. GTK+开发环境搭建(Centos+Netbeans)
  6. 如何测量太阳距离地球的距离
  7. php 面向对象的理解,我对php面向对象的细微理解
  8. UITextField对字符串的个数限制
  9. 第十二章 DOM2和DOM3
  10. SCPPO(三):禅道的使用—项目管理员、开发等人员
  11. 关于如何取消萤石云视频加密
  12. EBS开发_创建销售人员API
  13. 移动端网页点击链接出现蓝色背景如何解决
  14. 法国电子与计算机信息工程学校排名,法国工程学院的十大排名情况
  15. 如何设置浏览器标签图标
  16. MYSQL登录错误:mysqladmin: connect to server at 'localhost' failed acess denied for user 'root'@'localhos
  17. 华三防火墙配置端口地址转换_H3C SecPath 防火墙设置之端口映射(命令)
  18. 微型计算机celeron是,谁是赛扬D最佳搭档?微型计算机告诉你
  19. [实变函数]3.3 可测集类
  20. csgo好友服务器延迟,CSGO国服新手入门-与好友一起游戏

热门文章

  1. tornado的views(templates)
  2. MSSQL2005:“超时时间已到。在操作完成之前超时时间已过或服务器未响应”
  3. 构建一个可靠的分布式计数器--memcached之incr/decr操作实战分析
  4. Android反编译与防止反编译
  5. ORACLE学习笔记--性能优化3
  6. AWK学习笔记五:可执行AWK程序
  7. OC4J、UCP、CGI(引用)
  8. 公司招聘asp.net 工程师
  9. 页面加载时序问题----BUG分析
  10. poj 1386 欧拉回路