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设计模式之单例模式实例
Apr 26 Python
Python 常用string函数详解
May 30 Python
python绘制圆柱体的方法
Jul 02 Python
详解Python最长公共子串和最长公共子序列的实现
Jul 07 Python
Pycharm+Scrapy安装并且初始化项目的方法
Jan 15 Python
python多线程并发实例及其优化
Jun 27 Python
PyTorch 普通卷积和空洞卷积实例
Jan 07 Python
Pytorch使用MNIST数据集实现CGAN和生成指定的数字方式
Jan 10 Python
Python基于smtplib协议实现发送邮件
Jun 03 Python
Python绘图之二维图与三维图详解
Aug 04 Python
Python基于Faker假数据构造库
Nov 30 Python
python实现图片转字符画
Feb 19 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的array数组和使用实例简明教程(容易理解)
2014/03/20 PHP
PHP中Restful api 错误提示返回值实现思路
2016/04/12 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
AngularJS + Node.js + MongoDB开发的基于高德地图位置的通讯录
2015/01/02 Javascript
js+css实现tab菜单切换效果的方法
2015/01/20 Javascript
JQuery插件jcarousellite的参数中文说明
2015/05/11 Javascript
Js数组排序函数sort()介绍
2015/06/08 Javascript
值得分享的Bootstrap Ace模板实现菜单和Tab页效果
2015/12/30 Javascript
js组件SlotMachine实现图片切换效果制作抽奖系统
2016/04/17 Javascript
JS跨域交互(jQuery+php)之jsonp使用心得
2016/07/01 Javascript
js实现百度地图定位于地址逆解析,显示自己当前的地理位置
2016/12/08 Javascript
bootstrap滚动监控器使用方法解析
2017/01/13 Javascript
Vue.js:使用Vue-Router 2实现路由功能介绍
2017/02/22 Javascript
Angularjs 根据一个select的值去设置另一个select的值方法
2018/08/13 Javascript
React 组件中的 bind(this)示例代码
2018/09/16 Javascript
移动端如何用下拉刷新的方式实现上拉加载
2018/12/10 Javascript
javascript实现留言板功能
2020/02/08 Javascript
前端如何实现动画过渡效果
2021/02/05 Javascript
从零学python系列之从文件读取和保存数据
2014/05/23 Python
python实现爬虫下载美女图片
2015/07/14 Python
利用Python爬虫给孩子起个好名字
2017/02/14 Python
python urllib urlopen()对象方法/代理的补充说明
2017/06/29 Python
python代码过长的换行方法
2018/07/19 Python
selenium+python实现自动化登录的方法
2018/09/04 Python
在Pycharm中调试Django项目程序的操作方法
2019/07/17 Python
pytorch 模型可视化的例子
2019/08/17 Python
Python生成器实现简单&quot;生产者消费者&quot;模型代码实例
2020/03/27 Python
Python urllib request模块发送请求实现过程解析
2020/12/10 Python
CSS3 background-image颜色渐变的实现代码
2018/09/13 HTML / CSS
应用艺术专业个人的自我评价
2014/01/03 职场文书
《春到梅花山》教学反思
2014/04/16 职场文书
小学数学教学经验交流材料
2014/05/22 职场文书
党的群众路线教育实践活动对照检查材料(四风)
2014/09/27 职场文书
银行反四风对照检查材料
2014/09/29 职场文书
不服劳动仲裁起诉书
2015/05/20 职场文书
干部外出学习心得体会
2016/01/18 职场文书