class
date:
'hfgfghfgh'
def__init__
(self,y,m,d):
self.y=y
self.m=m
self.d=d
def__format__
(self, format_spec):
return
''.format(self,format_spec)
d=date(2018,8,3)
print(format(d,'-'))
print(format(d,':'))
#輸出2018-8-3
2018:8:3
class
dog:
def__init__
(self,name,age):
self.name=name
self.age=age
def__str__
(self):
return
'name:%s age:%d'%(self.name,self.age)
d=dog('wawa',2)
print(str(d))#str(d)會呼叫__str__方法
print(d)# print會呼叫str()方法
#輸出name:wawa age:2
name:wawa age:2
class
dog:
def__init__(self,name):
self.name=name
def__getattr__(self,item):
print('------>getattr')
def__delattr__(self, item):
self.__dict__.pop(item)。 #__dict__是屬性字典。這裡不能這麼寫(del self.item),因為會進入無限遞迴
print(item+'已刪除')
a=dog('wawa')
delattr(a,'name')
a.name
#輸出name已刪除
------>getattr
class
dog:
def__init__
(self,name):
self.name=name
def__getattr__
(self,item):
print('------>getattr')
def__delattr__
(self, item):
self.__dict__.pop(item)
print(item+'已刪除')
def__setattr__
(self, key, value):
self.__dict__[key]=value #同樣,這裡也不能寫self.key=value
print(key+'已設定')
a=dog('wawa')
delattr(a,'name')
a.name='haha'
print(a.name)
#輸出name已設定
name已刪除
name已設定
haha
class
fib:
def__init__
(self,m):
self.n=0
self.a=1
self.b=1
self.m=m
def__iter__
(self):
return self
def__next__
(self):
if self.n==0:
self.n+=1
return self.a
elif self.n>=self.m:
raise stopiteration #raise是主動丟擲異常用的
else:paoc
self.a,self.b=self.b,self.a+self.b
self.n+=1
return self.a
f=fib(4)
for i in f:
#for迴圈會先呼叫__iter__方法,再連續呼叫__next__方法,如果捕捉到stopiteration這個異常就會停止for迴圈
print(i)
#輸出112
3
學習python 第十六天
流 i o 一 編碼 編碼明文 暗文 明文 暗文 解碼計算機只認識010101 ascii 0 127 ansi ascii加上拉丁文 gb2312 ascii加上7000多個漢字 前八位和後八位 127 gbk gb2312加上2萬多個漢字 前八位 127 unicode 國際通用 utf 8 推...
Python 第十六天
魔法方法總是被雙下劃線包圍 例如 init 注 魔法方法第乙個引數為cls 類方法 或者self 例項方法 其中 cls 代表乙個類名稱 self 代表乙個例項物件的名稱 基本方法 init self 構造器,當乙個例項被建立的時候呼叫的初始化方法 new cls 是在乙個物件例項化的時候所呼叫的第...
python第十六天
一 包 1 什麼是包?一系列模組的集合 2 有什麼用?包通過資料夾來管理一系列功能相近的模組 3 包重點?包中一定有乙個專門用來管理包中所有模組的檔案 init 4 什麼是包名?包名是存放一系列模組的資料夾名字 5 包名有什麼用 包名 包物件 存放的是管理模組的那個檔案的位址,指向其全域性命名空間。...