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创建日历实例
Aug 21 Python
python基础之包的导入和__init__.py的介绍
Jan 08 Python
学习python中matplotlib绘图设置坐标轴刻度、文本
Feb 07 Python
pandas将numpy数组写入到csv的实例
Jul 04 Python
在Mac下使用python实现简单的目录树展示方法
Nov 01 Python
浅谈pycharm出现卡顿的解决方法
Dec 03 Python
Python3实现的旋转矩阵图像算法示例
Apr 03 Python
python如何爬取网站数据并进行数据可视化
Jul 08 Python
python装饰器代替set get方法实例
Dec 19 Python
以SQLite和PySqlite为例来学习Python DB API
Feb 05 Python
Pycharm编辑器功能之代码折叠效果的实现代码
Oct 15 Python
python 获取域名到期时间的方法步骤
Feb 10 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常见漏洞攻击分析
2016/02/21 PHP
编写可维护面向对象的JavaScript代码[翻译]
2011/02/12 Javascript
用最通俗易懂的代码帮助新手理解javascript闭包 推荐
2012/03/01 Javascript
判断是否安装flash player及当前版本的JS代码
2013/08/08 Javascript
jquery选择器、属性设置用法经验总结
2013/09/08 Javascript
JS简单实现文件上传实例代码(无需插件)
2013/11/15 Javascript
JavaScript的arguments对象应用示例
2014/09/15 Javascript
js与jquery实时监听输入框值的oninput与onpropertychange方法
2015/02/05 Javascript
js简单实现竖向tab选项卡的方法
2015/05/04 Javascript
使用Angular.js开发的注意事项
2016/10/19 Javascript
浅谈js中function的参数默认值
2017/02/20 Javascript
新手vue构建单页面应用实例代码
2017/09/18 Javascript
Vue的实例、生命周期与Vue脚手架(vue-cli)实例详解
2017/12/27 Javascript
NodeJS简单实现WebSocket功能示例
2018/02/10 NodeJs
elementUI Vue 单个按钮显示和隐藏的变换功能(两种方法)
2018/09/04 Javascript
使用js实现一个简单的滚动条过程解析
2019/09/10 Javascript
Vue快速实现通用表单验证的方法
2020/02/24 Javascript
vue项目中微信登录的实现操作
2020/09/08 Javascript
Python中max函数用法实例分析
2015/07/17 Python
Python实现Smtplib发送带有各种附件的邮件实例
2017/06/05 Python
简单了解Python中的几种函数
2017/11/03 Python
对Python中plt的画图函数详解
2018/11/07 Python
python简单的三元一次方程求解实例
2020/04/02 Python
Oakley官网:运动太阳镜、雪镜和服装
2016/09/30 全球购物
巴西最好的男鞋:Rafarillo
2018/05/25 全球购物
Notino罗马尼亚网站:购买香水和化妆品
2019/07/20 全球购物
俄罗斯最大的在线珠宝大卖场:Nebo
2019/12/08 全球购物
JVM是一个编译程序还是解释程序
2012/09/11 面试题
支行行长竞聘演讲稿
2014/05/15 职场文书
2014年审计工作总结
2014/11/17 职场文书
2014年双拥工作总结
2014/11/21 职场文书
征求意见函
2015/06/05 职场文书
2016圣诞节贺卡寄语
2015/12/07 职场文书
《游戏公平》教学反思
2016/02/20 职场文书
使用numpy实现矩阵的翻转(flip)与旋转
2021/06/03 Python
SQL Server中使用判断语句(IF ELSE/CASE WHEN )案例
2021/07/07 SQL Server