博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python全栈之路系列之面向对象特殊成员
阅读量:4637 次
发布时间:2019-06-09

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

类的特殊成员之call

#!/usr/bin/env python# _*_coding:utf-8 _*_class SpecialMembers:    # 类的构造方法    def __init__(self):        print("hello world")    # 对象的构造方法    def __call__(self):        print("My Name is: kongling")# 创建一个对象,并且执行类的构造方法obj = SpecialMembers()# 执行对象的构造方法obj()# 先执行类的构造方法,然后在执行对象的构造方法SpecialMembers()()

输出

hello worldMy Name is: konglinghello worldMy Name is: kongling

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

输出

valuek1 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__

输出

slice(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 = "kongling"        self.Blog = "https://www.cnblogs.com"# 获取类中的成员print(SpecialMembers.__dict__)# 创建一个对象obj = SpecialMembers()# 获取对象中的成员print(obj.__dict__)

输出

{
'__weakref__':
, '__doc__': '\n 类的注释\n ', '__module__': '__main__', '__dict__':
, '__init__':
} { 'Blog': 'https://www.cnblogs.com', 'Name': 'kongling'}

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

输出

123

 

转载于:https://www.cnblogs.com/ethereala/p/9012228.html

你可能感兴趣的文章
INNO SETUP 获得命令行参数
查看>>
Charles抓取https请求
查看>>
LAMP环境搭建
查看>>
C语言的变量的内存分配
查看>>
clientcontainerThrift Types
查看>>
链接全局变量再说BSS段的清理
查看>>
hdu 1728 逃离迷宫
查看>>
HTML5与CSS3权威指南之CSS3学习记录
查看>>
docker安装部署
查看>>
AVL树、splay树(伸展树)和红黑树比较
查看>>
多媒体音量条显示异常跳动
查看>>
运算符及题目(2017.1.8)
查看>>
React接入Sentry.js
查看>>
ssh自动分发密匙脚本样板
查看>>
转 小辉_Ray CORS(跨域资源共享)
查看>>
Linux安装postgresql
查看>>
MyBatis启动:MapperStatement创建
查看>>
【kindeditor】KindEditor获取多个textarea文本框的值并判断非空
查看>>
【 全干货 】5 分钟带你看懂 Docker !
查看>>
[转]优化Flash性能
查看>>