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

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

python :

(思维导图 ↑↑↑↑)

类的特殊成员

  python的类成员存在着一些具有特殊含义的成员

1.__init__: 类名() 自动执行 __init__

class Foo(object):    def __init__(self,a1,a2):        self.a1 = a1        self.a2 = a2obj = Foo(1,2)

 

2.__call__: 对象() 自动执行__call__

class Foo(object):    def __call__(self, *args, **kwargs):        print(1111,args,kwargs)        return 123obj = Foo()ret = obj(6,4,2,k1=456)

 

3.__getitem__: 对象['xx'] 自动执行__getitem__

class Foo(object):    def __getitem__(self, item):        print(item)        return 8obj = Foo()ret = obj['yu']print(ret)

 

4.__setitem__: 对象['xx'] = 11 自动执行__setitem__

class Foo(object):    def __setitem__(self, key, value):        print(key, value, 111111111)obj = Foo()obj['k1'] = 123

 

5.__delitem__: del 对象[xx] 自动执行__delitem__

class Foo(object):    def __delitem__(self, key):        print(key)obj = Foo()del obj['uuu']

 

6.__add__: 对象+对象 自动执行__add__

class Foo(object):    def __init__(self, a1, a2):        self.a1 = a1        self.a2 = a2    def __add__(self,other):        return self.a1 + other.a2obj1 = Foo(1,2)obj2 = Foo(88,99)ret = obj2 + obj1print(ret)

 

7.__enter__ / __exit__: with 对象 自动执行__enter__ / __exit__

class Foo(object):    def __init__(self, a1, a2):        self.a1 = a1        self.a2 = a2    def __enter__(self):        print('1111')        return 999    def __exit__(self, exc_type, exc_val, exc_tb):        print('22222')obj = Foo(1,2)with obj as f:    print(f)    print('内部代码')

 

8.__new__: 构造方法

class Foo(object):    def __init__(self, a1, a2):     # 初始化方法        """        为空对象进行数据初始化        :param a1:        :param a2:        """        self.a1 = a1        self.a2 = a2    def __new__(cls, *args, **kwargs): # 构造方法        """        创建一个空对象        :param args:        :param kwargs:        :return:        """        return object.__new__(cls) # Python内部创建一个当前类的对象(初创时内部是空的.).obj1 = Foo(1,2)print(obj1)obj2 = Foo(11,12)print(obj2)

 

转载于:https://www.cnblogs.com/zbw582922417/p/9554912.html

你可能感兴趣的文章
面向对象六大基本原则的理解
查看>>
注解小结
查看>>
java代码编译与C/C++代码编译的区别
查看>>
Bitmap 算法
查看>>
转载 C#文件中GetCommandLineArgs()
查看>>
list control控件的一些操作
查看>>
精读《useEffect 完全指南》
查看>>
SNF快速开发平台MVC-EasyQuery-拖拽生成SQL脚本
查看>>
DrawerLayout实现双向侧滑
查看>>
CentOS下同步时间并写入CMOS
查看>>
Java基础-一个java文件多个类的问题
查看>>
Maven安装jar包到本地仓库
查看>>
前端学习总览
查看>>
HDU1228 A + B
查看>>
第一阶段冲刺个人博客10
查看>>
[分块] 洛谷 P3396 哈希冲突
查看>>
《程序设计实践》中文版pdf
查看>>
NLog简单使用
查看>>
MySQL入门很简单-触发器
查看>>
LVM快照(snapshot)备份
查看>>