日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

面向对象进阶篇

發布時間:2025/3/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面向对象进阶篇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 面向對象是一種編程方式,此編程方式的實現是基于對??和?對象?的使用
  • 類 是一個模板,模板中包裝了多個“函數”供使用(可以講多函數中公用的變量封裝到對象中)
  • 對象,根據模板創建的實例(即:對象),實例用于調用被包裝在類中的函數
  • 面向對象三大特性:封裝、繼承和多態

類的成員

類的成員可以分為三大類:字段、方法和屬性

?

注:所有成員中,只有普通字段的內容保存對象中,即:根據此類創建了多少對象,在內存中就有多少個普通字段。而其他的成員,則都是保存在類中,即:無論對象的多少,在內存中只創建一份。

一、字段

字段包括:普通字段和靜態字段,他們在定義和使用中有所區別,而最本質的區別是內存中保存的位置不同,

  • 普通字段屬于對象
  • 靜態字段屬于
class Proice:#靜態字段country = "中國"def __init__(self,name):#普通字段self.name = name ret = Proice("山西") print(ret.name) #直接訪問普通字段 print(ret.country) #直接訪問靜態字段 View Code

應用場景: 通過類創建對象時,如果每個對象都具有相同的字段,那么就使用靜態字段

二、方法

方法包括:普通方法、靜態方法和類方法,三種方法在內存中都歸屬于類,區別在于調用方式不同。

  • 普通方法:由對象調用;至少一個self參數;執行普通方法時,自動將調用該方法的對象賦值給self
  • 類方法:由調用; 至少一個cls參數;執行類方法時,自動將調用該方法的復制給cls
  • 靜態方法:由調用;無默認參數;
class Paric:def func(self):#普通方法print("name")@classmethod#類方法 最少有一個參數def xxoo(cls,arg1,arg2):print(arg1,arg2)#靜態方法 可也加參數也可以不加參數 @staticmethoddef xo():print("xo") ret = Paric() #創建對象 ret.func() #對象調用普通方法 Paric.xxoo(1,2) #類調用類方法 Paric.xo() #類調用靜態方法 View Code

三、屬性  

如果你已經了解Python類中的方法,那么屬性就非常簡單了,因為Python中的屬性其實是普通方法的變種。

對于屬性,有以下三個知識點:

  • 屬性的基本使用
  • 屬性的兩種定義方式
  • 調用時,無需括號?
class Foo:def __init__(self,name):self.name = name#獲取 @propertydef func(self):temp = self.namereturn temp#設置 @func.setterdef func(self,value):self.name = value#調用 @func.deleterdef func(self):del self.nameret = Foo("Wyc") r = ret.func #獲取 print(r) del ret.func #刪除 ret.func = "nihao" #設置 View Code

靜態字段方式,創建值為country對象的靜態字段

class Foo:#靜態字段country ="中國"def func(self):print("11") #類調用靜態方法 print(Foo.country) View Code

類成員的修飾符

類的所有成員在上一步驟中已經做了詳細的介紹,對于每一個類的成員而言都有兩種形式:

  • 公有成員,在任何地方都能訪問
  • 私有成員,只有在類的內部才能使用方法

私有成員和公有成員的定義不同:私有成員命名時,前兩個字符是下劃線。(特殊成員除外,例如:__init__、__call__、__dict__等)

class Foo:#私有字段__yer = "Wyc"def func(self):#用類調用私有字段,只能在內部調用。print(Foo.__yer) ret = Foo() ret.func() View Code class Foo:#公有靜態字段name = "中國"def func(self):pass#公有靜態字段由類調用 print(Foo.name) View Code

類的特殊成員

?

?__doc__

  表示類的描述信息

class Foo:"""這是__doc__的方法"""def func(self):pass#由類直接調用,類的注釋 print(Foo.__doc__) View Code class Foo:#構造方法,簡稱封裝def __init__(self):self.name = "wyc"def func(self):print(self.name) ret = Foo() ret.func() View Code

__call__

  對象后面加括號,觸發執行。

class Foo:def func(self):passdef __call__(self, *args, **kwargs):print("123") ret = Foo() ret() #對象后邊加括號自動觸發__call__方法 View Code

?__dict__

  類或對象中的所有成員

class Foo:def func(self):pass ret = Foo.__dict__ #查看類或對象中的所有成員 print(ret) View Code

?__str__

  如果一個類中定義了__str__方法,那么在打印 對象 時,默認輸出該方法的返回值。

class Foo: #默認輸出該↓方法的默認值def __str__(self):return "Wyc" ret = Foo() print(ret) View Code

?__getitem__、__setitem__、__delitem__

用于索引操作,如字典。以上分別表示獲取、設置、刪除數據

class Foo:def __setitem__(self,key,value):print(key,value) r = Foo() r["xxx"] = 123 #對象后邊加中括號就會執行__setitem__方法,一個key,一個value View Code

?

class Foo:def __delitem__(self,key):print(key) r = Foo() del r["xxx"] #執行__delitem__方法,刪除key View Code

?

class Foo:def __getitem__(self, item):print(item) r = Foo() r["123456"] #對象后邊加個中括號就會自動執行 View Code

?__iter__?

用于迭代器,之所以列表、字典、元組可以進行for循環,是因為類型內部定義了 __iter_

class Foo(object):def __init__(self,sq):self.sq = sqdef __iter__(self):return iter(self.sq) obj = Foo([11,22,33,44,55]) for i in obj:print(i) View Code

總結:

成員:

? ? ?字段 ? ? ?靜態字段(每個對象都有一份),普通字段(每個對象都有不同的數據)

? ? ?方法 ? ? ?靜態方法(無需使用對象封裝的內容),類方法,普通方法(使用對象中的數據)

? ? ?特性 ? ? ?普通特性(將方法偽造成字段)

如何快速判斷,類執行,或者對象執行:

? ? ? ? ? ? ? ? ?有self的對象調用

? ? ? ? ? ? ? ? ?無self的,類調用

總結

以上是生活随笔為你收集整理的面向对象进阶篇的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。