




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、由于液體與高分子網(wǎng)絡的親和性,液體被高分子網(wǎng)絡封閉在里面,失去了流動性,因此凝膠會象固體一樣顯示出一定的形狀 第第 9 9 章章 Python Python 中的面向?qū)ο笾械拿嫦驅(qū)ο?手把手教你學手把手教你學PythonPython(進階進階篇)篇) 由于液體與高分子網(wǎng)絡的親和性,液體被高分子網(wǎng)絡封閉在里面,失去了流動性,因此凝膠會象固體一樣顯示出一定的形狀 主要內(nèi)容 CONTENTS 02 類中的變量 03 類中的方法 04 類的繼承 01 類和對象 由于液體與高分子網(wǎng)絡的親和性,液體被高分子網(wǎng)絡封閉在里面,失去了流動性,因此凝膠會象固體一樣顯示出一定的形狀 01 類 和 對 象 由于液體與
2、高分子網(wǎng)絡的親和性,液體被高分子網(wǎng)絡封閉在里面,失去了流動性,因此凝膠會象固體一樣顯示出一定的形狀 Python中的面向?qū)ο?面向?qū)ο笏枷?面向?qū)ο笫窍鄬τ诿嫦蜻^程而言的,它是一種對現(xiàn)實世界理解和抽象的方法,是 計算機編程技術(shù)發(fā)展到一定階段的產(chǎn)物。 面向過程編程主要是分析出實現(xiàn)需求所需要的步驟,通過函數(shù)一步一步實現(xiàn)這些 步驟,接著依次調(diào)用函數(shù)即可。 面向?qū)ο缶幊虅t是分析出需求中涉及到哪些對象,這些對象各自有哪些特征、有什么功能, 對象之間存在何種關(guān)系等,將存在共性的事物或關(guān)系抽象成類。最后通過對象的組合和調(diào)用完 成需求。 面向過程編程性能更高,適合于簡單系統(tǒng),容易理解。面向?qū)ο缶幊桃拙S護、易擴
3、展、易 復用,適合于復雜系統(tǒng),靈活方便。 由于液體與高分子網(wǎng)絡的親和性,液體被高分子網(wǎng)絡封閉在里面,失去了流動性,因此凝膠會象固體一樣顯示出一定的形狀 Python中的面向?qū)ο?類和對象 p 對象是指實實在在存在的各種事物,例如桌子、汽車、學生等。對象通常包 含兩部分信息:屬性和行為。一般使用變量表示對象的屬性,用函數(shù)或方法 表示對象的行為。 p 現(xiàn)實世界中,先有對象后有類;而在計算 機的世界里,先有類后有對象。在面向?qū)?象程序設(shè)計中,先在類中定義共同的屬性 和行為,然后通過類創(chuàng)建具有特定屬性值 和行為的實例,這便是對象。 p 大部分時候,定義一個類就是為 了重復創(chuàng)建該類的實例,同一個 類的多
4、個實例具有相同的特征, 而類則是定義了多個實例的共同 特征。類不是一種具體存在,實 例才是具體存在。 p 類是用來描述一組具有相同屬性和行為的對象的模 板,是對這組對象的概括、歸納和抽象表達。 由于液體與高分子網(wǎng)絡的親和性,液體被高分子網(wǎng)絡封閉在里面,失去了流動性,因此凝膠會象固體一樣顯示出一定的形狀 Python中的面向?qū)ο?類的定義 在Python中,通過class關(guān)鍵字定義類,然后通過定義的類創(chuàng)建實例對象。 在Python中定義類的語法如下所示: class : 類屬性1 類屬性n p 定義類時,需使用class關(guān)鍵字; p class關(guān)鍵字后是類名,名字由用戶自由指定,通常首字 母大寫
5、,見名知意; p 類名后跟冒號,類體由縮進的語句塊組成。類的成員分為 兩種類型:描述屬性的數(shù)據(jù)成員和描述行為的函數(shù)成員。 p 類中通常包含一個特殊方法:_init_。它在創(chuàng)建和初始 化一個新對象時被系統(tǒng)自動調(diào)用,初始化方法用于完成對 象的初始化工作,如成員變量賦值等。 由于液體與高分子網(wǎng)絡的親和性,液體被高分子網(wǎng)絡封閉在里面,失去了流動性,因此凝膠會象固體一樣顯示出一定的形狀 Python中的面向?qū)ο?類的定義 class Rectangle: def _init_(self, width, height): # 定義初始化方法,指定寬度和高度 self.width = width # 定義數(shù)
6、據(jù)成員寬度 self.height = height # 定義數(shù)據(jù)成員高度 def get_area(self): # 定義方法獲取矩形的面積 return self.width * self.height def get_perimeter(self): # 定義方法獲取矩形的周長 return 2 * (self.width + self.height) 定義一個矩形類,包含兩個數(shù)據(jù)成員:矩形的寬度和矩形的高度,提供兩個 方法:獲取矩形的面積和獲取矩形的周長。 類中定義的每個方法都有一個 名為 self 的參數(shù),該參數(shù)必 須是方法的第一個參數(shù),self 表示當前對象,即指向調(diào)用方 法的對象
7、。 由于液體與高分子網(wǎng)絡的親和性,液體被高分子網(wǎng)絡封閉在里面,失去了流動性,因此凝膠會象固體一樣顯示出一定的形狀 Python中的面向?qū)ο?創(chuàng)建類的對象 類是一種抽象的概念,要使用類定義的功能,就必須進行類的實例化,即創(chuàng)建類 的對象。例如矩形是一種抽象概念,長為 5 寬為 3的矩形就是具體的矩形對象。 創(chuàng)建類的對象的方式類似函數(shù)調(diào)用方式: 對象名 = 類名(參數(shù)列表) 注意:程序通過類的 _init_() 方法接受(參數(shù)列表)中的參數(shù),參數(shù)列表中的參數(shù) 要與_init_()方法中除了 self 以外的參數(shù)匹配。 調(diào)用對象的屬性和方法的格式: p 對象名. 對象的屬性 p 對象名.對象的方法()
8、 rect_1 = Rectangle(3, 5) # 創(chuàng)建矩形對象 print(矩形的寬度為:, rect_1.width) print(矩形的高度為:, rect_1.height) print(矩形面積為:, rect_1.get_area() print(矩形周長為:, rect_1.get_perimeter() 由于液體與高分子網(wǎng)絡的親和性,液體被高分子網(wǎng)絡封閉在里面,失去了流動性,因此凝膠會象固體一樣顯示出一定的形狀 p設(shè)計一個 表示圓的類:Circle,這個 類包含一個實例成員變量:半徑, 包含兩個方法:求面積的方法、求 周長的方法。利用這個類創(chuàng)建半徑 為110的圓,并打印出相
9、應的信 息,運行效果如圖所示,保留兩位 小數(shù)。 課后練習題 由于液體與高分子網(wǎng)絡的親和性,液體被高分子網(wǎng)絡封閉在里面,失去了流動性,因此凝膠會象固體一樣顯示出一定的形狀 02 類中的變量 由于液體與高分子網(wǎng)絡的親和性,液體被高分子網(wǎng)絡封閉在里面,失去了流動性,因此凝膠會象固體一樣顯示出一定的形狀 Python中的面向?qū)ο?類中的變量 成員變量用于存儲描述類或?qū)ο髮傩缘闹?,根?jù)位置不同可分為:類變量和實 例變量。成員變量可以被該類中定義的方法訪問,也可以在外部通過對象進行訪問, 而在方法體中定義的局部變量,則只能在方法內(nèi)進行訪問。 實例變量 在方法內(nèi)部通過“self.變量名”定義的 變量,注意和
10、局部變量的區(qū)別,實例變量在類的 內(nèi)部通過“self.變量名”訪問,在外部通過“對象 名.變量名”來訪問。 實例變量一般是在_init_() 方法中進行初始 化,self.變量名 = _init_ ()方法傳遞過來的實參。 也可以在其他方法中定義或創(chuàng)建對象后添加,但 不建議。 import time class Student: def _init_(self, name): = name init_time = time.strftime(%Y- %m-%d %H:%M:%S) print(init_time) def set_major(self, major): sel
11、f.major = major 由于液體與高分子網(wǎng)絡的親和性,液體被高分子網(wǎng)絡封閉在里面,失去了流動性,因此凝膠會象固體一樣顯示出一定的形狀 Python中的面向?qū)ο?成員變量 p 在Python中可通過dir(對象)查看該對象所 有的成員名稱。 p 直接訪問一個不存在的實例變量時,將會 拋出屬性異常:AttributeError。 p 直接對一個不存在的實例變量賦值,將會 為該對象添加一個實例變量。有點類似于 字典中鍵的操作。 s_1 = Student(張三) # 創(chuàng)建對象 print(dir(s_1) s_1.set_major(計算機) # 調(diào)用方法 print(dir(s_1) s_
12、1.num = 007 # 新增實例變量 print(dir(s_1) print(s_1.sex) # 訪問不存在的實例變量 注意:如果實例變量名以兩個下劃線開始,即“_變量名”,表示該變量屬于私有變量,只允許 在這個類的內(nèi)部調(diào)用,在外部無法直接調(diào)用。 由于液體與高分子網(wǎng)絡的親和性,液體被高分子網(wǎng)絡封閉在里面,失去了流動性,因此凝膠會象固體一樣顯示出一定的形狀 Python中的面向?qū)ο?成員變量 p 類變量 在類中所有方法之外定義 的變量,可以在所有實例之間共享, 類變量可以通過“類名.類變量名” 進行訪問,也可以通過“對象名. 類變量名”進行訪問,但一般不建 議這么做。 class Stu
13、dent: count = 0 def _init_(self, name): = name Student.count = Student.count + 1 s_1 = Student(張三) # 創(chuàng)建對象 s_2 = Student(李四) # 創(chuàng)建對象 print(Student.count) print(s_1.count) print(s_2.count) p 直接訪問一個不存在的類變量時,將會拋 出屬性異常:AttributeError。 p 直接對一個不存在的類變量賦值,將會為 該類添加一個類變量。 # print(Student.num) # 拋出異常 S
14、tudent.num = 5 # 添加類變量 print(s_2.num) 由于液體與高分子網(wǎng)絡的親和性,液體被高分子網(wǎng)絡封閉在里面,失去了流動性,因此凝膠會象固體一樣顯示出一定的形狀 Python中的面向?qū)ο?成員變量 p 當類變量名和實例變量名相同時,通 過“對象名.變量名”訪問時,訪問的 是實例變量。如果確實想要訪問類變 量,只能通過“類名.類變量名”。 注意:對類變量的賦值只能通過“類名.類變量名”來執(zhí)行, 對“對 象名.類變量名”進行賦值相當于創(chuàng)建了一個同名的實例變量。 Student.count = 8 print(s_1.count) print(s_2.count) s_1.c
15、ount = 8 print(s_1.count) print(s_2.count) VS p 如果類變量名以兩個下劃線開始, 即“_類變量名”,表示該變量屬 于私有變量,只允許在這個類的內(nèi) 部調(diào)用,在外部無法直接調(diào)用。 由于液體與高分子網(wǎng)絡的親和性,液體被高分子網(wǎng)絡封閉在里面,失去了流動性,因此凝膠會象固體一樣顯示出一定的形狀 Python中的面向?qū)ο?class Person: def _init_(self, name=未知, age=18): = name # 公有成員變量 self._age = age # 私有成員變量 property def age(self
16、): return self._age age.setter def age(self, new_age): if new_age 120: print(年齡范圍不對!) else: self._age = new_age age.deleter def age(self): del self._age Python中提供 property裝飾器把類中 的方法“裝飾”成屬性使用,property裝 飾器默認提供一個讀取成員變量值的接口, 如果需要修改成員變量的值可搭配使用屬 性名.setter裝飾器,如果需要刪除成員變量 可搭配使用屬性名.deleter裝飾器。 p = Person(張三,
17、20, 男) p.age = 23 print(p.age) 裝飾器 由于液體與高分子網(wǎng)絡的親和性,液體被高分子網(wǎng)絡封閉在里面,失去了流動性,因此凝膠會象固體一樣顯示出一定的形狀 課后練習題 p 閱讀下列程序代碼,思考程序執(zhí)行結(jié)果。 t_1 = Test(5) t_2 = Test(8) t_1.print() t_2.print() t_1 = Test(5) t_2 = Test(8) t_1.count = 12 t_1.print() t_2.print() t_1 = Test(5) t_2 = Test(8) Test.count = 12 t_1.print() t_2.prin
18、t() class Test: count = 0 def _init_(self, num=10): Test.count = Test.count + 1 self._num = num def print(self): print(count=, self.count) print(num=, self._num) t_1 = Test(5) t_2 = Test(8) t_1._num = 15 t_1.print() t_2.print() t_1 = Test(5) t_2 = Test(8) t_1._Test_num = 15 t_1.print() t_2.print() 由
19、于液體與高分子網(wǎng)絡的親和性,液體被高分子網(wǎng)絡封閉在里面,失去了流動性,因此凝膠會象固體一樣顯示出一定的形狀 03 類中的方法 由于液體與高分子網(wǎng)絡的親和性,液體被高分子網(wǎng)絡封閉在里面,失去了流動性,因此凝膠會象固體一樣顯示出一定的形狀 Python中的面向?qū)ο?類的方法 方法是與類相關(guān)的函數(shù),類中方法的定義與普通的函數(shù)大致相同。 類中定義的方法大致分為三類:實例方法、類方法和靜態(tài)方法。 p 實例方法:至少包含一個對象參數(shù),在內(nèi)部通過“self.方法()”調(diào)用,在外部通過 “對象名.方法()”調(diào)用,執(zhí)行時,自動將調(diào)用方法的對象作為參數(shù)傳入; p 類方法:至少包含一個類參數(shù),由類調(diào)用,調(diào)用類方法時
20、,自動將調(diào)用該方法的 類作為參數(shù)傳入; p 靜態(tài)方法:由對象或類直接調(diào)用,對參數(shù)沒有特殊要求。 由于液體與高分子網(wǎng)絡的親和性,液體被高分子網(wǎng)絡封閉在里面,失去了流動性,因此凝膠會象固體一樣顯示出一定的形狀 Python中的面向?qū)ο?類的實例方法 實例方法和函數(shù)定義類似,但第一個參數(shù)必須為實例對象,參數(shù)名 通常為self,表示當前調(diào)用這個方法的對象。實例方法定義語法如下: def 實例方法名(self, 形參列表): 方法體 p 在類的內(nèi)部通過self.方法名(參數(shù)) 來調(diào)用實例方法,在類的外部需通 過對象名.方法名(參數(shù))調(diào)用實例方 法。調(diào)用時無需傳遞self參數(shù)。 p 如果方法名以兩個下劃線
21、開始,即 “_方法名”,表示該方法屬于私 有方法,只允許在這個類的內(nèi)部調(diào) 用,在外部無法直接調(diào)用。 def having_class(self, course_name): print(, 正在上課,課程為: , course_name) 由于液體與高分子網(wǎng)絡的親和性,液體被高分子網(wǎng)絡封閉在里面,失去了流動性,因此凝膠會象固體一樣顯示出一定的形狀 Python中的面向?qū)ο?類方法 p 類方法 定義前一般添加“classmethod”裝飾器,第一個參數(shù)必須為類對象, 參數(shù)通常為 cls,表示當前類。 p 類方法只能訪問類變量,不能訪問實例變量。 p 使用類方法時,既可以通過“對
22、象名.類方法名”來訪問,也可以通過“類名.類方 法名”來訪問。 p 類方法通常用于定義與該類相關(guān)而與具體對象無關(guān)的操作。 class A: name = A classmethod def show_1(cls): print() A.show_1() a = A() a.show_1() classmethod def 類方法名(cls, 形參列表): 方法體 由于液體與高分子網(wǎng)絡的親和性,液體被高分子網(wǎng)絡封閉在里面,失去了流動性,因此凝膠會象固體一樣顯示出一定的形狀 Python中的面向?qū)ο?靜態(tài)方法 p 靜態(tài)方法定義前一般添加“staticmethod”裝飾器。形式上與普
23、通函數(shù)無區(qū)別。 p 靜態(tài)方法只能訪問屬于類的成員,不能訪問屬于對象的成員。 p 使用靜態(tài)方法時,既可以通過“對象名.靜態(tài)方法名”來訪問,也可以通過“類名. 靜態(tài)方法名”來訪問。 p 靜態(tài)方法主要作為一些工具方法,通常與類和對象無關(guān)。 class A: name = A staticmethod def show_2(): print(A.name) A.show_2() a = A() a.show_2() staticmethod def 靜態(tài)方法名(形參列表): 方法體 由于液體與高分子網(wǎng)絡的親和性,液體被高分子網(wǎng)絡封閉在里面,失去了流動性,因此凝膠會象固體一樣顯示出一定的形狀 Pytho
24、n中的面向?qū)ο?構(gòu)造方法和初始化方法 Python的類中有兩個特殊的方法:_new_() 和 _init_()。這兩個方法用于創(chuàng)建并 初始化一個對象。當實例化一個類對象時,最先被調(diào)用的是 _new_() 方法。_new_()方 法創(chuàng)建完對象后,將該對象傳遞給 _init_() 方法中的 self 參數(shù)。而_init_()方法是在對 象創(chuàng)建完成之后初始化對象狀態(tài)。這兩個方法都是在實例化對象時被自動調(diào)用的,不需要 程序顯式調(diào)用。 _new_() 方法在 object 類中定義,該方法至少需要一個參數(shù) cls 表示需要實例化的類。 _new_()方法必須要有返回值,返回實例化對象。python中的類
25、都直接或間接繼承自object 類。如果類定義中沒有提供 _new_() 方法,將使用從父類繼承而來的_new_() 方法。 由于液體與高分子網(wǎng)絡的親和性,液體被高分子網(wǎng)絡封閉在里面,失去了流動性,因此凝膠會象固體一樣顯示出一定的形狀 Python中的面向?qū)ο?實例的構(gòu)造與初始化 _init_() 方法有一個參數(shù) self,該參數(shù)就是 _new_() 方法返回的實例對象。 若_new_() 方法沒有正確返回當前類 cls 的實例對象,那么_init_()方法將無法被調(diào) 用。_init_() 方法在 _new_() 方法的基礎(chǔ)上完成一些初始化工作,不需要返回值。 如果用戶在類中未提供 _init
26、_() 方法,系統(tǒng)將默認調(diào)用父類的初始化方法。Python 中所 有的類都直接或間接繼承于object類,該類中提供了_init_() 方法。 class A: def _new_(cls, *args, *kwargs): print(調(diào)用_new_方法) return super()._new_(cls) def _init_(self): print(調(diào)用_init_方法) a = A() 調(diào)用_new_方法 調(diào)用_init_方法 由于液體與高分子網(wǎng)絡的親和性,液體被高分子網(wǎng)絡封閉在里面,失去了流動性,因此凝膠會象固體一樣顯示出一定的形狀 04 類的繼承 由于液體與高分子網(wǎng)絡的親和性,液
27、體被高分子網(wǎng)絡封閉在里面,失去了流動性,因此凝膠會象固體一樣顯示出一定的形狀 Python中的面向?qū)ο?繼承 p 繼承是一種創(chuàng)建新類的方式,在Python中,新建的類可以繼承一個或多個父 類,父類又可稱為基類或超類,新建的類稱為派生類或子類。 p 子類可以繼承父類的公有成員,但不能繼承其私有成員。如果需要在子類中 調(diào)用父類的方法,可以使用內(nèi)置函數(shù) super() 或者通過“基類名.方法名()” 的方式來實現(xiàn)。 class 子類名(父類1, 父類2, ., 父類n): 類體 p 如果在類定義中沒有指定父類,則默認其父類為 object,object是所有類的根基類。此時,可以省去 類名后面的圓括
28、號。 p 注意圓括號中父類的順序,使用類的實例對象調(diào)用一 個方法時,若在子類中未找到,則會從左到右查找父 類中是否包含該方法。 類的多重繼承的語法格式: 通過類提供的 _bases_ 屬性可 以查看該類的所有直接父類。 由于液體與高分子網(wǎng)絡的親和性,液體被高分子網(wǎng)絡封閉在里面,失去了流動性,因此凝膠會象固體一樣顯示出一定的形狀 Python中的面向?qū)ο?object類 p object類是Python中所有類的基類,如果定義一個類時如果沒有指定繼承哪 個類,則默認繼承object類。object類中定義的所有方法名都是以兩個下劃線 開始、以兩個下劃線結(jié)束,其中比較重要的方法有_new_()、_
29、init_()、 _str_() 、 _eq_() 和 _dir_()等。 p _str_() 方法會返回一個描述該對象的字符串。默認情況下,它返回一個由該對象所屬 的類名以及該對象十六進制形式的內(nèi)存地址組成的字符串。 p _eq_() 方法用于比較兩個對象是否相等,默認是比較兩個對象是否指向同一引用,可 根據(jù)業(yè)務需求重寫該方法,使用 “=”判斷兩個對象是否相等時將會調(diào)用該方法。 p _dir_() 方法用于顯示對象內(nèi)部所有的屬性和方法。 p _dict_ 屬性以字典的形式顯示對象內(nèi)部存儲的所有屬性名和屬性值。 由于液體與高分子網(wǎng)絡的親和性,液體被高分子網(wǎng)絡封閉在里面,失去了流動性,因此凝膠會
30、象固體一樣顯示出一定的形狀 Python中的面向?qū)ο?方法重寫 當父類的方法不能滿足子類的要求時,可以在子類中重寫父類的方法,也就是 在子類中寫一個和父類的方法名相同的方法。 class Person: def _init_(self, name, age, sex): = name self.age = age self.sex = sex def working(self): print(, 正在工作!) def show(self): print(姓名:, , 年齡:, self.age, 性別:, self.sex) studen
31、t_1 = Student(major=軟件工程) student_1.working() student_1.show() class Student(Person): # Student 繼承于 Person def _init_(self, name=張三, age=20, sex=男, major=計算機): super()._init_(name, age, sex) # 調(diào)用父類初始化方法 self.major = major def show(self): # 重寫父類方法 Person.show(self) # 調(diào)用父類方法 print(專業(yè):, self.major) # 添
32、加額外代碼 由于液體與高分子網(wǎng)絡的親和性,液體被高分子網(wǎng)絡封閉在里面,失去了流動性,因此凝膠會象固體一樣顯示出一定的形狀 Python中的面向?qū)ο?多繼承時調(diào)用順序 創(chuàng)建子類對象時,將會默認按順序創(chuàng)建所有父類的對象,即調(diào)用父類的_new_() 方法。但并不會調(diào)用所有父類的_init_() 方法。 class A: def _new_(cls, *args, *kwargs): print(創(chuàng)建A的對象) return super()._new_(cls) def _init_(self): self.count = 5 self.num = 15 print(A 的初始化) def show(
33、self): print(A 的show方法) def test(self): print(A 的test方法) 如果子類沒有提供自己的 _init_() 方法,將會默認調(diào)用第一個父類的 _init_() 方法;如果 子類提供了 _init_() 方法,則默認不會調(diào)用父類的 _init_() ,此時,父類的成員變量將無法初 始化,因此,通常會在子類的 _init_() 方法中,顯示調(diào)用父類的 _init_() 方法。 class B: def _new_(cls, *args, *kwargs): print(創(chuàng)建B的對象) return super()._new_(cls) def _ini
34、t_(self): self.num = 8 print(B 的初始化) def show(self): print(B 的show方法) class C (B, A): pass c = C() c.show() c.test() print(num: , c.num) print(count: , c.count) 修改代碼觀察結(jié)果: class C (A, B): 由于液體與高分子網(wǎng)絡的親和性,液體被高分子網(wǎng)絡封閉在里面,失去了流動性,因此凝膠會象固體一樣顯示出一定的形狀 Python中的面向?qū)ο?多繼承時方法解析順序 對于支持繼承的編程語言來說,其方法(屬性)可能定 義在當前類,也可能
35、來自于基類,所以在方法調(diào)用時就需要 對當前類和基類進行搜索以確定方法所在的位置。而搜索的 順序就是所謂的方法解析順序(Method Resolution Order,MRO)。對于只支持單繼承的語言來說,MRO 一 般比較簡單,就是從當前類開始,逐個搜索它的父類;而對 于支持多繼承的語言來說,MRO 就復雜很多。 搜索順序: E B A D C object 可以通過系統(tǒng)提供的:_mro_ 屬性查看類的搜索順序 由于液體與高分子網(wǎng)絡的親和性,液體被高分子網(wǎng)絡封閉在里面,失去了流動性,因此凝膠會象固體一樣顯示出一定的形狀 Python中的面向?qū)ο?對象的拷貝 賦值符號“=”使得兩個對象引用相同,
36、此時一個對象的變化也會影響另一對象。 如果想將原對象的內(nèi)容復制一份,可用copy模塊的copy函數(shù),如 b = copy.copy(a), 此時 a 和 b 對象內(nèi)容相同,但是引用不同。copy函數(shù)是淺拷貝,只拷貝當前對象,不 會拷貝對象內(nèi)部的其他對象。如果要遞歸拷貝對象中的其他對象,可用copy模塊的 deepcopy 進行深拷貝,如 b = copy.deepcopy(a),此時,b 完全拷貝了 a 對象及 其子對象,a 和 b是完全獨立的。 import copy class Birthday: def _init_(self, year, month, day): self.year = year self.month = month self.day = day class Person: def _init_(self, name, birthday): = name self.birthday = birthday birth_1 = Birthday(2000, 5, 12) p_1 = Person(李四, birth_1) # 創(chuàng)建對象 birth_2 = Birthday(2000, 5, 12) p_2 = Person(李四, birth_2) # 創(chuàng)建對象 p_3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)牧設(shè)備回收合同范本
- app軟件采購合同范本
- 勞動合同范本 簡約
- 佛山機械購銷合同范本
- 京東供貨方合同范本
- 加工協(xié)作合同范本
- 勞務合同范本保密協(xié)議
- 動漫公司產(chǎn)品合同范本
- 修理提成合同范例
- 全款買車正規(guī)合同范本
- 經(jīng)典文學作品中的女性形象研究外文文獻翻譯2016年
- 控股集團公司組織架構(gòu)圖.docx
- 高爐煤氣安全知識的培訓
- 2008 年全國高校俄語專業(yè)四級水平測試試卷
- 需求供給與均衡價格PPT課件
- 最常用2000個英語單詞_(全部標有注釋)字母排序
- 人造革的幾種生產(chǎn)制造方法
- 在銀行大零售業(yè)務工作會議上的講話講解學習
- 古代傳說中的藝術(shù)形象-
- 水電站大壩土建安裝工程懸臂模板施工手冊
- 三體系內(nèi)審檢查表(共58頁).doc
評論
0/150
提交評論