Python檔案袋( 面向對象 )

類即是一個模型,根據模型建立起不同的對象,對象間擁有共同的一些屬性

簡單的類:

 1 class P:
 2     #類變量,所有實例共享變量,推薦使用方法是:類名.類變量名
 3     pvarx="ppvar1"
 4 
 5     #構造函數
 6     def __init__(self,valuex):
 7         #實例變量,只屬于當前實例
 8         self.valuex=valuex
 9 
10     #類方法
11     def pfun1(self):
12         print("類方法1輸出",self.valuex,P.pvarx)
13 
14     #析構函數,先生成,先死亡
15     def __del__(self):
16         print("再見,實例:",self)
17 
18 #創建對象,類的實例化
19 p1=P("傳遞參數")
20 
21 #調用類變量
22 P.pvarx="11222333"
23 
24 #調用類方法
25 p1.pfun1()
26 
27 #刪除對象,變量等,直接使用del()
28 #del p1

類變量和實例變量:

類變量:

類及所有實例共享變量,推薦使用方法是 【類名.變量名】

實例變量(self.變量名):

只屬于當前實例

注意:

如果同名且用實例調用時,則優先尋找到實例變量

使用實例調用并修改類變量值時,只能修改自己的,不影響整體

類方法使用全局變量:

Global聲明變量為外部變量,表示可以長久修改外部變量,不寫則只能使用,不能修改

 1 varx=1 #外部變量
 2 
 3 class XX:
 4     def funx(self):
 5         #global varx #聲明為外部變量,表示可以長久修改外部變量,不寫則只能使用
 6         varx=111
 7         print("------",varx) #輸出:111
 8 
 9 x=XX()
10 x.funx()
11 print(varx) #輸出:1

類屬性的私有化

私有變量:

在變量前加兩個下劃線即可,如【self.__變量名】,只能在類內訪問,不能在類外通過實例訪問

私有方法:

在類方法名前加入兩個下劃線,如【def __方法名(self){}】,使用與上相同

類的繼承:

類可以實現多繼承,多繼承則可以用逗號分隔類名,如:子類名(父類1,父類2),繼承的執行時從左到右,在列子中是先執行父類1,然后執行父類2
 1 class P:
 2     pvarx="ppvar1"
 3 
 4     #類構造方法
 5     def __init__(self,var1x):
 6         print(var1x)
 7     #類方法
 8     def pfun1(self):
 9         print("PPPPPP")
10 
11 #繼承P類
12 class P1(P):
13     #重寫父類的方法
14     def pfun1(self):
15         #P.pfun1(self) #調用父類的方法1
16         print("p1p1p1p1p1p1",P1.pvarx)
17 
18 p1=P1("ppp111")#實例化
19 p1.pfun1()
20 P.pfun1(p1)#調用父類的方法2
構造函數:
如果子類有自己的構造函數,則必須在子類構造函數里調用父類的構造函數,如果父類的構造函數參數為空,則可忽略。使用下列方法1可以實現多繼承效果,一句就可以實現多個父類的構造函數,只是其中父類的構造函數參數必須相同
def __init__(self,v1,v2,v3):#super(P1,self).__init__(v1) #執行父類構造函數方法一#P(v1) #執行父類構造函數方法二P.__init__(self,v1) #方法三print(v1,v2,v3)

實例變量的繼承:

父類中可以訪問子類的實例變量
class P:#類方法def pfun1(self):print("PPPPPP",self.p1var)#繼承P類
class P1(P):def __init__(self,p1v):self.p1var=p1vp1=P1(11111)#實例化
p1.pfun1() #輸出:PPPPPP 11111

多態

一個方法的多種實現,通過傳遞實例對象,實現調用實例中對應的方法
def pto(obj):obj.funx()

靜態方法:

通過類名調用,與實例無關
class P:@staticmethoddef funx(varpx):print("-----------",varpx)P.funx("dongxiaodong")

類內方法:

不可訪問實例變量,只能訪問類變量:
class P:#類變量classvarx="112233"def __init__(self):self.xvar="類方法不可訪問此實例變量"#類內方法
   @classmethoddef funx(self,varpx):print("-----------",varpx,self.classvarx)p1=P()
p1.funx("dongxiaodong")

屬性方法:

調用簡單,調用時如同使用變量
class P:#屬性方法
   @propertydef funx(self):print("-----------")p1=P()
p1.funx  #調用,如同變量調用
內容補充:
 1 class P:
 2    funxvar11x="xxxx"
 3    
 4    #屬性方法
 5    @property
 6    def funx(self):
 7        print("-----------",P.funxvar11x)
 8 
 9    @funx.setter
10    def funx(self,funxvar11):
11        P.funxvar11x=funxvar11
12 
13    @funx.deleter
14    def funx(self):
15        del P.funxvar11x
16 
17 p1=P()
18 p1.funx #輸出:----------- xxxx
19 p1.funx="1122"  #賦值
20 p1.funx #輸出:----------- 1122
21 
22 del p1.funx #刪除

類的一些特殊方法

 1 class P:
 2  def __call__(self, *args, **kwargs):
 3      print("----call----",args)
 4 
 5 p1=P()
 6 
 7 p1("11",22) #對象加括號傳遞參數,自動調用類中的call方法
 8 print(p1.__class__) #得到所屬類名
 9 
10 print(P.__dict__) #類名調用,打印類里的所有屬性
11 print(p1.__dict__) #實例調用,打印實例的所有屬性

反射

 1 class P:
 2  def pfunx(self, name):
 3      print("---- pfunx ----",name)
 4 
 5 p1=P()
 6 
 7 if hasattr(p1,"pfunx"): #判斷對象里是否有某個方法
 8     funx=getattr(p1,"pfunx") #得到改方法的內存地址
 9     funx("dongxiaodong") #調用該方法
10 
11     setattr(p1,"pvar","112233") #設置實例變量值,沒有則新建實例變量
12     print(getattr(p1,"pvar")) #使用實例變量
13     delattr(p1, "pvar")  # 刪除實例變量

轉載于:https://www.cnblogs.com/dongxiaodong/p/10495168.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/278126.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/278126.shtml
英文地址,請注明出處:http://en.pswp.cn/news/278126.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

javascript中的后退和刷新

轉自&#xff1a;https://www.cnblogs.com/tylerdonet/p/3911303.html <input typebutton value刷新 οnclick"window.location.reload()"><input typebutton value前進 οnclick"window.history.go(1)"><input typebutton value后退 οncl…

第四周

7-2 選擇法排序 &#xff08;20 分) 本題要求將給定的n個整數從大到小排序后輸出。 輸入格式&#xff1a; 輸入第一行給出一個不超過10的正整數n。第二行給出n個整數&#xff0c;其間以空格分隔。 輸出格式&#xff1a; 在一行中輸出從大到小有序的數列&#xff0c;相鄰數字間有…

checkPathValidity 檢查所有agent的corridor的m_path是否有效

在checkPathValidity&#xff08;檢查所有agent的corridor的m_path是否有效&#xff09; 如果是無效的要進行重新設置并且設置replan 首先獲得第一個polygon&#xff0c;m_path[0] 這里&#xff0c;因為addagent的時候&#xff0c;ag->corridor.reset(ref, nearest); m_path…

來談談JAVA面向對象 - 魯班即將五殺,大喬送他回家??

開發IDE為Eclipse或者MyEclipse。 首先&#xff0c;如果我們使用面向過程的思維來解決這個問題&#xff0c;就是第一步做什么&#xff0c;第二步做什么&#xff1f; 魯班即將五殺&#xff0c;大喬送他回家 這個現象可以簡單地拆分為兩步&#xff0c;代碼大概是這個樣子的: publ…

Vue 教程第一篇——基礎概念

認識 Vue 關于 Vue 的描述有不少&#xff0c;不外乎都會拿來與 Angular 和 React 對比&#xff0c;同樣頭頂 MVVM 雙向數據驅動設計模式光環的 Angular 自然被對比的最多&#xff0c;但到目前為止&#xff0c;Angular 在熱度上已明顯不及 Vue&#xff0c;性能已成為最大的詬病。…

Microsoft Teams的Outgoing Webhook開發入門

Microsoft Teams的應用程序有幾種形式&#xff1a; TabsBotsConnectorsMessaging extensionsActivity feed integrationsOutgoing web hooks 這篇我們主要介紹如何使用 ASP.NET Core來開發最簡單的Outgoing web hook。 什么是outgoing webhook Outgoing webhooks allow you t…

0418 jQuery筆記(添加事件、each、prop、$(this))

1.添加點擊事件、each、prop、$(this) 1 //全選框的被動操作2 //定義一個標志保存最終狀態3 var flag false;4 //為每一個選擇框添加點擊事件&#xff0c;數組.click()5 $(.chex).click(function(){6 //遍歷數組&#xff0c;數組.each()7 …

[WC2008]游覽計劃(斯坦納樹)

[Luogu4294] 題解 : 斯坦納樹 \(dp[i][j]\) 表示以\(i\)號節點為根&#xff0c;當前狀態為\(j\)&#xff08;與\(i\)連通的點為\(1\)&#xff09; 當根\(i\)不改變時狀態轉移方程是&#xff1a; \(dp[i][j] \min_{s \in j}\{dp[i][s] dp[i][\complement_js] - val[i]\}\) 當根…

使用dotnet template快速開發Microsoft Teams Outgoing Web Hook

在上一篇文章中&#xff0c;我們一步步從無到有在Microsoft Teams中開發了一個簡單的Outgoing Webhook&#xff0c;并和我們本地的Web API應用程序產生交互&#xff0c;總結起來的步驟大概如下&#xff1a; 導航到“團隊” Tab頁&#xff0c; 選中需要建立的Channel, 選中“應…

[Swift]LeetCode1013. 將數組分成和相等的三個部分 | Partition Array Into Three Parts With Equal Sum...

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★?微信公眾號&#xff1a;山青詠芝&#xff08;shanqingyongzhi&#xff09;?博客園地址&#xff1a;山青詠芝&#xff08;https://www.cnblogs.com/strengthen/&#xff09;?GitHub地址&a…

京津冀產業協同升級 智慧城市等高端產業需求遇熱

云計算、智慧交通、城市環保科技等高端智慧城市產業項目正成為京津冀產業協同的新關注點。 21日&#xff0c;在由北京市經信委、天津市工信委、河北省工信廳聯合組織的京津冀產業協同發展招商推介專項行動上&#xff0c;超過200家與會企業共完成產業對接項目額達311.7億元。與以…

Microsoft Teams:刪除成員賬戶其歷史聊天會發生什么?

介紹&#xff1a; 此博客文章的目的是演示從Office 365刪除用戶的賬號后&#xff0c;此用戶在Microsoft Teams群聊和私聊中的歷史聊天記錄會發生什么改變。 以下是Microsoft Teams聊天對話&#xff0c;其中Adele和其他團隊成員正在參與對話&#xff1a; 此外, Adele和Mega還在…

PostgreSQL Huge Page 使用建議 - 大內存主機、實例注意

標簽 PostgreSQL , Linux , huge page , shared buffer , page table , 虛擬地址 , 物理地址 , 內存地址轉換表 背景 當內存很大時&#xff0c;除了刷臟頁的調度可能需要優化&#xff0c;還有一方面是虛擬內存與物理內存映射表相關的部分需要優化。 1 臟頁調度優化 1、主要包括…

Microsoft Teams:團隊Owner離開公司后,我們該怎么做?

您是否曾在這么一個團隊里&#xff0c;該團隊唯一有Owner權限的人離開了公司&#xff1f;不幸的是,如果這個人不再在公司里&#xff0c;您可能覺得沒有辦法讓其他團隊成員再成為team的owner。我有一個簡單易用的解決方案&#xff0c;但您需要成為Office 365租戶的Admin或聯系你…

python網絡編程-socket編程

一、服務端和客戶端 BS架構 &#xff08;騰訊通軟件&#xff1a;serverclient&#xff09; CS架構 &#xff08;web網站&#xff09; C/S架構與socket的關系&#xff1a; 我們學習socket就是為了完成C/S架構的開發 二、OSI七層模型 互聯網協議按照功能不同分為osi七層或tcp/ip五…

使用PowerShell配置Microsoft Teams

作為 IT 專業人員, 我一直在尋找自動化任務的方法, 并使日常操作簡單。當使用Microsoft Teams時, 是否能夠在團隊中自動創建團隊&#xff0c;渠道和設置對于Microsoft Teams組建的成功與否至關重要。PowerShell對Microsoft Teams的支持使您可以做到這一點&#xff0c;它為我提供…

常見Kotlin高頻問題解惑

在筆者的Kotlin交流群里&#xff0c;不少同學反復遇到了一些相似的問題。這些問題大都比較基礎&#xff0c;但又容易產生誤解。因此&#xff0c;我決定寫一篇文章&#xff0c;整理群里同學遇到的一些問題 變量和常量的使用 在Kotlin語言中&#xff0c;我們使用var聲明變量&…

關于神經網絡訓練的一些建議筆記

關于網絡訓練時的參考建議&#xff1a; 1.train loss不斷下降&#xff0c;test loss不斷下降&#xff0c;網絡正在學習 2.train loss不斷下降&#xff0c;test loss趨于不變&#xff0c;網絡過擬合&#xff0c;需要增大數據&#xff1b;減小網絡規模dropout&#xff1b;權重衰減…

Microsoft Teams的保留策略

Microsoft Teams保留策略現在可在Office 365安全性和合規性中心里進行配置 今天&#xff0c;我們很自豪地宣布&#xff0c;我們正在開始推出針對Microsoft Teams的保留策略。 推出預計將在未來幾周內完成。 通過此次發布&#xff0c;Teams管理員可以使用Office 365安全性和合規…

八年溯源,如何巧搭區塊鏈

虎嗅注&#xff1a;區塊鏈正在逐步商業化&#xff0c;但最大的挑戰是共識。 為什么這樣說&#xff1f;因為商品的溯源防偽業務在過去正是因為缺乏信任感而沒有得到普及&#xff0c;這是每個溯源從業者最大的感受。 在虎嗅虎跑團每兩周一次線上分享會上&#xff0c;溯源鏈創始人…