1.__slots__是什么:是一个类变量,变量值可以是列表,元祖,或者可迭代对象,也可以是一个字符串(意味着所有实例只有一个数据属性) 2.引子:使用点来访问属性本质就是在访问类或者对象的__dict__属性字典(类的字典是共享的,而每个实例的是独立的) 3.为何使用__slots__:字典会占用大量内存,如果你有一个属性很少的类,但是有很多实例,为了节省内存可以使用__slots__取代实例的__dict__ 当你定义__slots__后,__slots__就会为实例使用一种更加紧凑的内部表…
#_*_coding:utf-8_*_ __author__ = 'Linhaifeng' class Foo: def __init__(self,x): self.x=x def __iter__(self): return self def __next__(self): n=self.x self.x+=1 return self.x f=Foo(3) for i in f: print(i) 简单示范 简单示范 class Foo: def __init__(self,start,st…
---恢复内容开始--- #_*_coding:utf-8_*_ __author__ = 'Linhaifeng' class Foo: def __init__(self,x): self.x=x def __iter__(self): return self def __next__(self): n=self.x self.x+=1 return self.x f=Foo(3) for i in f: print(i) class Foo: def __init__(self,start…
满足前提: 1).必须是一个可迭代对象 2).可以被next()所作用的 举例: generator... 高效的检测一个对象是否是迭代器对象 需要使用collections模块中的Iterator类配合isinstance()内置函数来判断 步骤如下: 第一步:导入collections模块 第二步:collections.Iterator(类型)配合isinstance()函数来判断,代码如下: isinstance(obj,collections.Iterator) 如果返回值为True,…
参考:slots NOTE 1.动态语言灵活绑定属性及方法. #!/usr/bin/env python3 class MyClass(object): def __init__(self): pass def func(obj): print(obj.name, obj.age) def main(): h = MyClass() h.name = 'Chen' h.age = '20' func(h) if __name__ == '__main__': main() 给对象h绑定了属性na…
Python之面向对象slots与迭代器协议 slots: # class People: # x=1 # def __init__(self,name): # self.name=name # def run(self): # pass # print(People.__dict__) # # p=People('alex') # print(p.__dict__) class People: __slots__=['x','y','z'] p=People() print(People.__…
多态 一种事物具备不同的形态 例如:水 --> 固态.液态.气态 多态:# 多个不同对象可以相应同一个对象,产生不同的结果 首先强调,多态不是一种特殊的语法,而是一种状态,特性(多个不同对象可以相应同一个方法,长身不同的结果) 好处:对于使用者而言,使用成本降低 ​ 之前的USB接口下的鼠标,键盘,就属于多态 接口抽象类 鸭子类型都可以写出具备多态的代码(最简单的就是鸭子类型) ''' 要管理 鸡 鸭 鹅 如何能够最方便的管理,就是我说同一句话,他们都能理解 他们拥有相同的方法 ''' clas…
1.item系列方法 # class Foo: # def __getitem__(self, item): # print('getitem',item) # return self.__dict__[item] # # def __setitem__(self, key, value): # print('setitem') # self.__dict__[key]=value # # def __delitem__(self, key): # print('delitem') # self…
一.什么是迭代器协议 1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个stoplteration异常,以终止迭代(只能往后走,不能往前退) 2.可迭代对象:实现了迭代器协议的对象(如何实现:对象内部定义一个__iter__()方法) 3.协议是一种约定,可迭代对象实现了迭代器协议,python的内部工具(如for循环,sum,min,max函数等)使用迭代器协议访问对象 二.python中强大的for循环机制 for循环的本质:循环所有对象,全都…
一.递归和迭代 递归:自己调用自己 举例解释:问路   A问B康明网络科技怎么走,B说我不是很清楚,我帮你问问C,C说我也不知道.我问问D,D说 就在兴隆.之后D返回结果给C,C返回结果给B,B返回结果给A. 迭代:迭,是更新的意思,每一次结果都是依据上一次结果产生. 举例解释:问路   A问B康明网络科技怎么走,B说我不是很清楚,C可能知道你自己去问,C说我也不知道.D可能知道你自己去问,D说 就在兴隆. 二.什么是迭代器协议1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回…