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 相关文章推荐
Linux下用Python脚本监控目录变化代码分享
May 21 Python
python脚本内运行linux命令的方法
Jul 02 Python
Python中用字符串调用函数或方法示例代码
Aug 04 Python
Pandas标记删除重复记录的方法
Apr 08 Python
Python3.5 Pandas模块之Series用法实例分析
Apr 23 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
Jul 16 Python
一篇文章弄懂Python中的可迭代对象、迭代器和生成器
Aug 12 Python
Python中类似于jquery的pyquery库用法分析
Dec 02 Python
解决pytorch-yolov3 train 报错的问题
Feb 18 Python
如何搭建pytorch环境的方法步骤
May 06 Python
Django Auth用户认证组件实现代码
Oct 13 Python
python控制台打印log输出重复的解决方法
May 14 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日历[测试通过]
2008/03/27 PHP
PHP中redis的用法深入解析
2014/02/20 PHP
php通过strpos查找字符串出现位置的方法
2015/03/17 PHP
使用symfony命令创建项目的方法
2016/03/17 PHP
thinkphp3.x自定义Action、Model及View的简单实现方法
2016/05/19 PHP
PHP实现笛卡尔积算法的实例讲解
2019/12/22 PHP
IE php关于强制下载文件的代码
2008/08/23 Javascript
JavaScript下申明对象的几种方法小结
2008/10/02 Javascript
在网页里看flash的trace数据的js类
2009/01/10 Javascript
jquery 模式对话框终极版实现代码
2009/09/28 Javascript
js实现Select下拉框具有输入功能的方法
2015/02/06 Javascript
基于HTML模板和JSON数据的JavaScript交互(移动端)
2016/04/06 Javascript
JavaScript知识点总结(四)之逻辑OR运算符详解
2016/05/31 Javascript
jQuery设置单选按钮radio选中/不可用的实例代码
2016/06/24 Javascript
js判断数组key是否存在(不用循环)的简单实例
2016/08/03 Javascript
JS组件系列之JS组件封装过程详解
2017/04/28 Javascript
JS判断非空至少输入两个字符的简单实现方法
2017/06/23 Javascript
在vue中封装方法以及多处引用该方法详解
2020/08/14 Javascript
linux环境下安装pyramid和新建项目的步骤
2013/11/27 Python
Python3如何解决字符编码问题详解
2017/04/23 Python
机器学习python实战之决策树
2017/11/01 Python
python使用mysql的两种使用方式
2018/03/07 Python
python实现扫描日志关键字的示例
2018/04/28 Python
Python日期时间模块datetime详解与Python 日期时间的比较,计算实例代码
2018/09/14 Python
使用keras内置的模型进行图片预测实例
2020/06/17 Python
春秋航空官方网站:Spring Airlines
2017/09/27 全球购物
车库门开启器、遥控器和零件:Chamberlain
2019/04/09 全球购物
为什么在使用动态 SQL 语句时必须为低层数据库对象授予权限
2012/12/13 面试题
《动手做做看》教学反思
2014/04/09 职场文书
车辆转让协议书
2014/09/24 职场文书
领导干部群众路线教育实践活动剖析材料
2014/10/10 职场文书
2014年变电站工作总结
2014/12/19 职场文书
python 通过使用Yolact训练数据集
2021/04/06 Python
教你怎么用python爬取爱奇艺热门电影
2021/05/20 Python
Java网络编程之UDP实现原理解析
2021/09/04 Java/Android
python基础之模块的导入
2021/10/24 Python