摘要:
上下文管理协议,即with语句。为了让一个对象兼容with语句,必须要在这个对象的类中声明__enter__和__exit__方法 class Open(): def __init__(self,name): self.name=name def __enter__(self): print('执行 阅读全文
摘要:
1.描述符本质就是一个新式类,在这个类中,至少实现了__set__,__get__,__delete__三种方法中的一种,也被称为描述符协议 __get__:调用相关属性时触发 __set__:修改相关属性时触发 __delete__:删除相关属性时触发 2.至少实现了__get__,和__set_ 阅读全文
摘要:
1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个Stopiteration异常,以终止迭代 2.可迭代对象:实现了迭代器协议的对象(如何实现:对象内部定义一个__iter__方法) class Foo: def __init__(self,n): s 阅读全文
摘要:
一、isinstance(obj,cls)检查obj是否是类cls的对象 二、__setitem__、__getitem__、__delitem__:只能用字典的方式,才能触发 与__getattr__、方式不同,效果一样 三、str与repr repr:如果找不到__str__,就会去找__rep 阅读全文
摘要:
getattr(object,name[,default]) 获取对象object的属性或者方法,如果存在打印出来,如果不存在,打印出默认值,默认值可选 注意:name必须用“”引起来 方法拿到的是地址,加()即可运行函数 阅读全文
摘要:
定制自己的数据类型: class List(list): def append(self, p_object): if type(p_object) is str: # self.append(p_object) #会无限循环 super().append(p_object) #调用父类的appen 阅读全文
摘要:
注意:跟类无关,只对类的实例起作用 1.__getattr__ 当_get_getattr__与__getattribute__一起出现时: 当属性存在时,触发__getattribute__ 当属性不存在时,也是先触发__getattribute__,然后通过语句:raise AttributeE 阅读全文
摘要:
1.__getattr__:当调用对象属性不存在时,才会触发 2.__delattr__:删除时会触发 3.__setattr__:设置属性时就会触发 阅读全文
摘要:
module_t=__import__('m1.t') #可以执行t,但拿到的是顶层的模块 print(module_t) # module_t.t.test1() # from m1.t import * # from m1.t import test1,_test2 # # test1() # _test2() import importlib m=importlib.im... 阅读全文
摘要:
反射的应用场景: 当是两个人写代码时,不需要必须一个人先写完 可以实现定义好接口,接口只有在被完成时才会真正执行,这实现了即插即用,‘后期绑定’, 即可以只定义接口,后期再去实现接口的功能 阅读全文