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模...