Python學習第八章 Python類的特殊方法

2021-10-01 09:26:45 字數 2679 閱讀 6657

8.2 與反射相關的屬性和方法

8.3 與序列先關的特殊方法

8.4 生成器

8.5 運算子過載的特殊方法

repr()是乙個特殊的方法,它是乙個自我描述的方法,通常用於告訴外界這個物件的細節資訊,一般而言可以對這個方法進行重寫,當列印這個方法的 物件時候,會得到其描述資訊。

#__repr__()

class

:def

__init__

(self,weight,color)

: self.weight =weight

self.color = color

def__repr__

(self)

:return

+str

(self.weight)

+',color = '

+self.color+

']'89

,'綠色'

)print

(a)

與__init__相對應的,__del__方法是析構方法,用於銷毀物件,在任何python物件被系統**的時候,都會自動呼叫這個函式。

# __del__

# __del__

class

item

:def

__init__

(self,name,price)

: self.name = name

self.price = price

def__del__

(self)

:print

('重寫析構'

)im = item(

'pwc'

,'23'

)x= im

del im

print

('-----------------'

)

從上面的**中可以看到,由於x一直在被程式呼叫並沒有被刪除掉,導致無法釋放物件,只能等到程式結束的時候才能夠將其釋放掉

物件的__dir__()方法用於列出該物件內部的所有屬性(包括方法名),該方法將返回包含所有屬性名的序列

用於檢視物件內部儲存的所有屬性名和屬性值組成的字典,通常程式直接使用該屬性即可

略序列最重要的特徵是可以包含多個元素,因此和序列有關的特殊方法有如下幾個

len(self):該方法的返回值決定序列中元素的個數

getitem(self,key):獲取指定索引對相應的元素,

contains(self,item):判斷序列是否包含指定元素

setitem(self,key,value):該方法設定指定索引對頂的元素

delitem(self,key):該方法刪除指定索引對應的元素

#定義乙個代表斐波那契數列的迭代器

class

fibs

:def

__init__

(self,

len)

: self.first =

0 self.sec =

1 self.__len =

lendef

__next__

(self)

:if self.__len ==0:

raise stopiteration

self.first,self.sec = self.sec,self.first+self.sec

self.__len -=

1return self.first

def__iter__

(self)

:return self

fibs = fibs(10)

print

(fibs.__next__())

print

(next

(fibs)

)for el in fibs:

print

(el,end =

' ')

生成器與迭代器的區別在於,迭代器通常是先定義乙個迭代器類,然後通過建立例項來建立迭代器,而生成器則是先定義乙個包含yield語句的函式,然後通過呼叫該函式來建立生成器,生成器是一種非常優秀的語法,會然程式變得更加優雅

#使用生成器來定義乙個差值遞增的數列,

deftest

(val,step)

:print

('--------------start'

) cur =

0for i in

range

(val)

: cur += i *step

yield cur

t = test(10,

2)print

('***************===='

)print

(t.__next__())

print

(t.__next__(

))

在生成器執行起來以後,開發者還可以為生成器提供值,通過在這種方式讓生成器與外部程式動態的交換資料。為了實現交換資料,需要使用send方法來實

第八章 指標 第八章 指標

1 什麼是位址 include using namespace std int main 11 在堆中建立對像 我們既然可以在堆中儲存變數,那麼也就可以儲存對像,我們可以將對像儲存堆中,然後通過指標來訪問它 include using namespace std class human 14 在建構...

python學習 第八章習題

8 6 城市名 編寫乙個名為 city country 的函式,它接受城市的名稱及其所屬的 國家。這個函式應返回乙個格式類似於下面這樣的字串 santiago,chile 至少使用三個城市 國家對呼叫這個函式,並列印它返回的值 8 7 編寫乙個名為 make album 的函式,它建立乙個描述 的字...

Python基礎 第八章

到斜槓與正斜槓 windows中,路徑書寫使用倒斜槓作為資料夾之間的分隔符,os x和linux上,則使用正斜槓作為它們的路徑分隔符。獲取當前工作目錄 os.getwd 即可獲得當前工作路徑的字串。絕對路徑和相對路徑 絕對路徑 總是從根資料夾開始,相對路徑 相對於程式的當前工作目錄。os.path模...