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获取当前路径实现代码
May 08 Python
centos6.4下python3.6.1安装教程
Jul 21 Python
Python中利用xpath解析HTML的方法
May 14 Python
python dataframe常见操作方法:实现取行、列、切片、统计特征值
Jun 09 Python
python绘制多个曲线的折线图
Mar 23 Python
python得到单词模式的示例
Oct 15 Python
Python OOP类中的几种函数或方法总结
Feb 22 Python
对python特殊函数 __call__()的使用详解
Jul 02 Python
python3实现的zip格式压缩文件夹操作示例
Aug 17 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
Nov 29 Python
Python 寻找局部最高点的实现
Dec 05 Python
Sentry错误日志监控使用方法解析
Nov 12 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/06/26 PHP
PHP批量删除、清除UTF-8文件BOM头的代码实例
2014/04/14 PHP
Linux下编译redis和phpredis的方法
2016/04/07 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
修改发贴的编辑功能
2007/03/07 Javascript
IE与Firefox下javascript getyear年份的兼容性写法
2007/12/20 Javascript
extjs form textfield的隐藏方法
2008/12/29 Javascript
jQuery 行级解析读取XML文件(附源码)
2009/10/12 Javascript
基于jQuery的日期选择控件
2009/10/27 Javascript
js处理表格对table进行修饰
2014/05/26 Javascript
jQuery取消ajax请求的方法
2015/06/09 Javascript
jQuery 移动端artEditor富文本编辑器
2016/01/11 Javascript
深入浅析JavaScript中with语句的理解
2016/05/12 Javascript
Node.js检测端口(port)是否被占用的简单示例
2016/09/29 Javascript
Vue实现virtual-dom的原理简析
2017/07/10 Javascript
React学习之JSX与react事件实例分析
2020/01/06 Javascript
浅谈Vue使用Cascader级联选择器数据回显中的坑
2020/10/31 Javascript
[36:37]2014 DOTA2华西杯精英邀请赛5 24 VG VS iG
2014/05/25 DOTA
[31:29]完美世界DOTA2联赛PWL S3 INK ICE vs Magma 第一场 12.20
2020/12/23 DOTA
Python实现字符串格式化输出的方法详解
2017/09/20 Python
python实现决策树分类
2018/08/30 Python
python 获取sqlite3数据库的表名和表字段名的实例
2019/07/17 Python
python实现简单图书管理系统
2019/11/22 Python
Python多重继承之菱形继承的实例详解
2020/02/12 Python
Python 保存加载mat格式文件的示例代码
2020/08/04 Python
css3media响应式布局实例
2016/07/08 HTML / CSS
Levi’s美国官网:美国著名的牛仔裤品牌
2016/08/19 全球购物
数控技术专科生自我评价
2014/01/08 职场文书
药品采购员岗位职责
2014/02/08 职场文书
出纳担保书范文
2014/04/02 职场文书
教书育人演讲稿
2014/09/11 职场文书
素质教育学习心得体会
2016/01/19 职场文书
《风筝》教学反思
2016/02/23 职场文书
导游词之山东八大关
2019/12/18 职场文书
七个Python必备的GUI库
2021/04/27 Python
【DOTA2】当街暴打?PSG LGD vs VG - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA