python 學習第十六天(類的常用內建方法)

2021-08-22 03:27:02 字數 2302 閱讀 7363

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 包名有什麼用 包名 包物件 存放的是管理模組的那個檔案的位址,指向其全域性命名空間。...