特殊方法,类之间的关系,分页
生活随笔
收集整理的這篇文章主要介紹了
特殊方法,类之间的关系,分页
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?
?
#特殊方法 class Foo(object):def __init__(self,a1,a2):self.a1 = a1self.a2 = a2def __call__(self, *args, **kwargs):print(11111,args,kwargs)return 123def __getitem__(self, item):print(item)return 8def __setitem__(self, key, value):print(key,value,111111111)def __delitem__(self, key):print(key)def __add__(self, other):return self.a1 + other.a2def __enter__(self):print('1111')return 999 #返回值給 fdef __exit__(self, exc_type, exc_val, exc_tb): print('22222') # 1. 類名() 自動執(zhí)行 __init__ obj = Foo(1,2) # 2. 對象() 自動執(zhí)行 __call__ ret = obj(6,4,2,k1=456) # 3. 對象['xx'] 自動執(zhí)行 __getitem__ ret = obj['yu'] print(ret) # 4. 對象['xx'] = 11 自動執(zhí)行 __setitem__ obj['k1'] = 123 # 5. del 對象[xx] 自動執(zhí)行 __delitem__ del obj['uuu'] # 6. 對象+對象 自動執(zhí)行 __add__ obj1 = Foo(1,2) obj2 = Foo(88,99) ret = obj2 + obj1 print(ret) # 7. with 對象 自動執(zhí)行 __enter__ / __exit__ obj = Foo(1,2) with obj as f: #__enter__的返回值給fprint(f) print('內部代碼') # 8. 真正的構造方法class Foo(object):def __init__(self, a1, a2): # 初始化方法self.a1 = a1self.a2 = a2def __new__(cls, *args, **kwargs): # 構造方法"""開辟一個內存空間,空對象"""return object.__new__(cls) # Python內部創(chuàng)建一個當前類的對象(初創(chuàng)時內部是空的.). obj1 = Foo(1,2)print(obj1)obj2 = Foo(11,12)print(obj2)?
class ff: def __new__(cls, *args, **kwargs):print('new')return object.__new__(cls)def __init__(self,name):self.name=nameprint('init')def __iter__(self):return [9,8,7,6]def __str__(self):
???????? return 'ff的對象'
#9.對象.__dict__ 獲取對象所有的屬性 print(obj3.__dict__) #10.對象.__iter__() #獲取迭代器,在類中寫此方法可以使對象變?yōu)榭傻鷮ο? for el in obj3.__iter__(): print(el) #11.改寫__str__()方法 print(obj3)
#分頁 方法1 class Pager:def __init__(self, lst, pageSize):self.lst = lstself.pageSize = pageSizedef start(self): # 1return self.__zhiding(1)def end(self): # 最后一頁return self.__zhiding(self.totle)def index(self): # 指定某一頁page = int(input("請輸入你要顯示的頁碼:"))return self.__zhiding(page)def __zhiding(self, page):return self.lst[self.pageSize * (page - 1): self.pageSize * page]@propertydef totle(self):totle = 0if len(self.lst)%self.pageSize == 0:totle = len(self.lst)//self.pageSizeelse:totle = len(self.lst) // self.pageSize + 1return totlep = Pager([i for i in range(20000)], 100) print(p.end()) print(p.index())#分頁 方法2 #pagesize是每頁的數(shù)據(jù)個數(shù) #lst是總數(shù)據(jù)的列表 class Page:@propertydef start(self): #開始的索引return (self.index-1)*self.pagesize@propertydef end(self):#結束的索引return self.index*self.pagesize@propertydef total(self):#總頁數(shù)if len(self.lst)%self.pagesize==0:return len(self.lst)//self.pagesizeelse:return len(self.lst)//self.pagesize +1def __init__(self,pagesize=10):self.lst=[] #總數(shù)據(jù)self.pagesize=pagesize #每頁的數(shù)據(jù)self.index=None #要展示的頁碼def page(self): #選擇展示頁碼的方法p=input('請輸入你要查詢的數(shù)據(jù)的頁碼,按Q退出:')if p.upper() == 'Q':return 0if int(p)<=self.total:self.index=int(p)return 1else:return 2def show(self):#展示的方法for i in range(self.start,self.end):print(self.lst[i])def makeData(self):#產生數(shù)據(jù)的方法for i in range(20000):self.lst.append('測試數(shù)據(jù)第%s條'%i)def run(self):#主程序 self.makeData()while 1:fanhuizhi=self.page()if fanhuizhi==0:breakelif fanhuizhi==1:self.show()elif fanhuizhi==2:print('輸入頁碼超范圍,請重新輸入') if __name__=='__main__':
objt=Page()
objt.run()
?
轉載于:https://www.cnblogs.com/PythonMrChu/p/9720471.html
總結
以上是生活随笔為你收集整理的特殊方法,类之间的关系,分页的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hashMap put方法 第二行代码
- 下一篇: 3、JMSN~Maven安装