05 2020 档案
元类
摘要:https://www.cnblogs.com/linhaifeng/articles/8029564.html 元类 元类属于python面向对象编程的深层魔法,99%的人都不得要领,一些自以为搞明白元类的人其实也只是自圆其说、点到为止,从对元类的控制上来看就破绽百出、逻辑混乱,今天我就来带大家来 阅读全文
posted @ 2020-05-11 20:10 Manuel 阅读(187) 评论(0) 推荐(0)
描述符补充@property
摘要:一个静态属性property本质就是实现了get,set,delete三种方法 class Foo: @property def AAA(self): print('get的时候运行我啊') @AAA.setter def AAA(self,value): print('set的时候运行我啊') @ 阅读全文
posted @ 2020-05-11 17:54 Manuel 阅读(154) 评论(0) 推荐(0)
描述符__get__(),__set__(),__delete__()
摘要:1 描述符是什么:描述符本质就是一个新式类,在这个新式类中,至少实现了__get__(),__set__(),__delete__()中的一个,这也被称为描述符协议__get__():调用一个属性时,触发__set__():为一个属性赋值时,触发__delete__():采用del删除属性时,触发 阅读全文
posted @ 2020-05-11 16:57 Manuel 阅读(172) 评论(0) 推荐(0)
__enter__和__exit__
摘要:我们知道在操作文件对象的时候可以这么写 1 with open('a.txt') as f: 2 '代码块' 上述叫做上下文管理协议,即with语句,为了让一个对象兼容with语句,必须在这个对象的类中声明__enter__和__exit__方法 class Open: def __init__(s 阅读全文
posted @ 2020-05-11 16:10 Manuel 阅读(160) 评论(0) 推荐(0)
反射总结
摘要:描述符: 1 阅读全文
posted @ 2020-05-11 16:07 Manuel 阅读(100) 评论(0) 推荐(0)
__iter__和__next__实现迭代器协议
摘要:__iter__()将对象转换为可迭代对象,__next__()返回实现迭代 #_*_coding:utf-8_*_ __author__ = 'Linhaifeng' class Foo: def __init__(self,x): self.x=x def __iter__(self): ret 阅读全文
posted @ 2020-05-10 17:46 Manuel 阅读(168) 评论(0) 推荐(0)
__call__
摘要:__call__()方法 对象后面加括号,触发执行, 注:构造方法的执行是由创建对象触发的,即:对象 = 类名() ;而对于 __call__ 方法的执行是由对象后加括号触发的,即:对象() 或者 类()() class Foo: def __init__(self): pass def __cal 阅读全文
posted @ 2020-05-10 17:02 Manuel 阅读(119) 评论(0) 推荐(0)
__del__析构方法
摘要:析构方法,当对象在内存中被释放时,自动触发执行。 注:如果产生的对象仅仅只是python程序级别的(用户级),那么无需定义__del__,如果产生的对象的同时还会向操作系统发起系统调用,即一个对象有用户级与内核级两种资源,比如(打开一个文件,创建一个数据库链接),则必须在清除对象的同时回收系统资源, 阅读全文
posted @ 2020-05-10 16:55 Manuel 阅读(156) 评论(0) 推荐(0)
__doc__()、__module__和__class__
摘要:__doc__(): class Foo: '我是描述信息' pass print(Foo.__doc__) class Foo: '我是描述信息' pass class Bar(Foo): pass print(Bar.__doc__) #该属性无法继承给子类 __module__和__class 阅读全文
posted @ 2020-05-10 16:49 Manuel 阅读(170) 评论(0) 推荐(0)
__slots__()
摘要:''' 1.__slots__是什么:是一个类变量,变量值可以是列表,元祖,或者可迭代对象,也可以是一个字符串(意味着所有实例只有一个数据属性) 2.引子:使用点来访问属性本质就是在访问类或者对象的__dict__属性字典(类的字典是共享的,而每个实例的是独立的) 3.为何使用__slots__:字 阅读全文
posted @ 2020-05-10 16:40 Manuel 阅读(131) 评论(0) 推荐(0)
__str__()、__repr__()和__format__()
摘要:改变print(对象)的字符串显示__str__,__repr__, 自定制格式化字符串__format__ #_*_coding:utf-8_*_ __author__ = 'Linhaifeng' format_dict={ 'nat':'{obj.name}-{obj.addr}-{obj.t 阅读全文
posted @ 2020-05-10 16:39 Manuel 阅读(131) 评论(0) 推荐(0)
item系列方法
摘要:__setitem__,__getitem,__delitem__ class Foo: def __init__(self,name): self.name=name def __getitem__(self, item): print(self.__dict__[item]) def __set 阅读全文
posted @ 2020-05-10 16:11 Manuel 阅读(170) 评论(0) 推荐(0)
getattribute
摘要:getattribute class Foo: def __init__(self,x): self.x=x def __getattr__(self, item): print('执行的是我') # return self.__dict__[item] f1=Foo(10) print(f1.x) 阅读全文
posted @ 2020-05-10 15:57 Manuel 阅读(224) 评论(0) 推荐(0)
isinstance和issubclass
摘要:一 isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 1 class Foo(object): 2 pass 3 4 obj = Foo() 5 6 isinstance(obj, Foo 阅读全文
posted @ 2020-05-10 15:55 Manuel 阅读(137) 评论(0) 推荐(0)
继承方式完成包装
摘要:包装:python为大家提供了标准数据类型,以及丰富的内置方法,其实在很多场景下我们都需要基于标准数据类型来定制我们自己的数据类型,新增/改写方法,这就用到了我们刚学的继承/派生知识(其他的标准类型均可以通过下面的方式进行二次加工) class List(list): #继承list所有的属性,也可 阅读全文
posted @ 2020-05-08 19:07 Manuel 阅读(179) 评论(0) 推荐(0)
类的内置attr属性
摘要:类中内置有这三个属性__getattr__(),__setattr__(),__delattr__(),(仅对实例有用)若不重写会自动调用内置的,重写则调用重写后的。__getattr__()只有在调用不存在属性时触发 class Foo: x=1 def __init__(self,y): sel 阅读全文
posted @ 2020-05-08 18:38 Manuel 阅读(125) 评论(0) 推荐(0)