博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python学习之路-22 (面向对象特殊成员)
阅读量:5095 次
发布时间:2019-06-13

本文共 2881 字,大约阅读时间需要 9 分钟。

类的特殊成员之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.pyMy 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.pyvaluek1 valueskey

特殊的

#!/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.pyslice(1, 3, None) 
__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__':
, '__doc__': '\n 类的注释\n ', '__module__': '__main__', '__dict__':
, '__init__':
} { 'Blog': 'https://blog.Guniao.me', 'Name': 'Guniao'}

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

输出

Guniao@Darker:~$ python3 /home/Guniao/文档/Python_code/sublime/Week06/Day04/s2.py123

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

你可能感兴趣的文章
Windows Phone开发(4):框架和页 转:http://blog.csdn.net/tcjiaan/article/details/7263146
查看>>
python asyncio 异步实现mongodb数据转xls文件
查看>>
TestNG入门
查看>>
【ul开发攻略】HTML5/CSS3菜单代码 阴影+发光+圆角
查看>>
IOS-图片操作集合
查看>>
IO—》Properties类&序列化流与反序列化流
查看>>
测试计划
查看>>
Mysql与Oracle 的对比
查看>>
jquery实现限制textarea输入字数
查看>>
Codeforces 719B Anatoly and Cockroaches
查看>>
c# 泛型+反射
查看>>
第九章 前后查找
查看>>
Python学习资料
查看>>
jQuery 自定义函数
查看>>
jquery datagrid 后台获取datatable处理成正确的json字符串
查看>>
ActiveMQ与spring整合
查看>>
web服务器
查看>>
第一阶段冲刺06
查看>>
EOS生产区块:解析插件producer_plugin
查看>>
JS取得绝对路径
查看>>