本文目錄一覽:
如何理解python編程中類.類型.對象的實例等等
類就是一類事物的概括,比如人。
類型是數據類型,有內置的如字符串,數字,複數等,還有其他自定義的,就是自己寫的類。
對象和實例是一個東西,是類里具體的東西,如男人,女人,其他人等,這裡男人,女人還可以是一類,如再分年老的男人,年輕的男人等。
只要記住:類是一類事物的統稱,實例(或對象)是具體的東西。
僅供參考。
舉例:
class Person:
”’人的基本屬性:名字,年齡,性別等”’
def __init__(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex
class Man(Person):
def __init__(self, name, age):
super(Man, self).__init__(name, age, ‘male’)
class Woman(Person):
def __init__(self, name, age):
super(Woman, self).__init__(name, age, ‘female’)
Python的類和對象入門
本文來說說Python中的類與對象,Python這門語言是無處不對象,如果你曾淺要了解過Python,你應該聽過Python是一種面向對象編程的語言,所以你經常可能會看到面向“對象”編程這類段子,而面向對象編程的語言都會有三大特徵:封裝、繼承、多態。
我們平時接觸到的很多函數、方法的操作都具有這些性質,我們只是會用,但還沒有去深入了解它的本質,下面就介紹一下關於類和對象的相關知識。
封裝這個概念應該並不陌生,比如我們把一些數據封裝成一個列表,這就屬於數據封裝,我們也可以將一些代碼語句封裝成一個函數方便調用,這就是代碼的封裝,我們也可以將數據和代碼封裝在一起。用術語表示的話,就是可以將屬性和方法進行封裝,從而得到對象。
首先我們可以定義一個類,這個類中有屬性和方法,但有的夥伴會比較好奇,屬性和方法不是會封裝成對象嘛,為什麼又變成類了?舉個例子,類就好比是一個毛坯房,而對象是在毛坯房的基礎上改造成的精裝房。
在類定義完成時就創建了一個類對象,它是對類定義創建的命名空間進行了一個包裝。類對象支持兩種操作:屬性引用和實例化。
屬性引用的語法就是一般的標準語法:obj.name。比如XiaoMing.height和XiaoMing.run就是屬性引用,前者會返回一條數據,而後者會返回一個方法對象。
這裡也支持對類屬性進行賦值操作,比如為類中的weight屬性賦予一個新值。
而類的實例化可以將類對象看作成一個無參函數的賦值給一個局部變量,如下:
ming就是由類對象實例化後創建的一個實例對象,通過實例對象也可以調用類中的屬性和方法。
類在實例化過程中並不都是像上面例子一樣簡單的,一般類都會傾向將實例對象創建為有初始狀態的,所以在類中可能會定義一個__init__的魔法方法,這個方法就可以幫助接收、傳入參數。
而一個類如果定義了__init__方法,那麼在類對象實例化的過程中就會自動為新創建的實例化對象調用__init__方法,請看下面這個例子。
可以看到在__init__()中傳入了參數x和y,然後在print_coor中需要接收參數x和y,接下來通過實例化這個類對象,驗證一下參數是否能通過__init__()傳遞到類的實例化操作中。
所謂繼承就是一個新類在另一個類的基礎上構建而成,這個新類被稱作子類或者派生類,而另一個類被稱作父類、基類或者超類,而子類會繼承父類中已有的一些屬性和方法。
比如上面這個例子,我並沒有將list_定義成一個列表,但它卻能調用append方法。原因是類Mylist繼承於list這個基類,而list_又是Mylist的一個實例化對象,所以list_也會擁有父類list擁有的方法。當然可以通過自定義類的形式實現兩個類之間的繼承關係,我們定義Parent和Child兩個類,Child中沒有任何屬性和方法,只是繼承於父類Parent。
當子類中定義了與父類中同名的方法或者屬性,則會自動覆蓋父類對應的方法或屬性,還是用上面這個例子實現一下,方便理解。
可以看到子類Child中多了一個和父類Parent同名的方法,再實例化子類並調用這個方法時,最後調用的是子類中的方法。Python中繼承也允許多重繼承,也就是說一個子類可以繼承多個父類中的屬性和方法,但是這類操作會導致代碼混亂,所以大多數情況下不推薦使用,這裡就不過多介紹了。
多態比較簡單,比如定義兩個類,這兩個類沒有任何關係,只是兩個類中有同名的方法,而當兩個類的實例對象分別調用這個方法時,不同類的實例對象調用的方法也是不同的。
上面這兩個類中都有introduce方法,我們可以實例化一下兩個類,利用實例對象調用這個方法實現一下多態。
判斷一個類是否是另一個類的子類,如果是則返回True,反之則返回False。
需要注意的有兩點:
判斷一個對象是否為一個類的實例對象,如果是則返回True,反之則返回False。
需要注意的有兩點:
判斷一個實例對象中是否包含一個屬性,如果是則返回True,反之則返回False。
需要注意的是第二個參數name必須為字符串形式傳入,如果不是則會返回False。
Python-類對象和實例對象的區別
Python語言中類對象和實例對象是存在區別的,從類對象和實例對象的數據屬性來看比較清晰。
類對象:Class objects support two kinds of operations: attribute references and instantiation.
實例對象: The only operations understood by instance objects are attribute references.
我們用數據屬性引用來分別說明操作類對象和操作實例對象相應對實例對象和類對象的影響,以及實例對象賦值給新變量時又會帶來什麼影響。
第一步證明: 操作類對象的屬性值會影響實例對象的屬性值
python中類的實例對象的理解總結?
9.3.3. 實例對象
現在我們可以用實例對象作什麼?實例對象唯一可用的操作就是屬性引用。有兩種有效的屬性名。
數據屬性 相當於 Smalltalk 中的“實例變量”或 C++ 中的“數據成員”。和局部變量一樣,數據屬性不需要聲明,第一次使用時它們就會生成。例如,如果 x 是前面創建的 MyClass 實例,下面這段代碼會打印出 16 而在堆棧中留下多餘的東西:
x.counter = 1
while x.counter 10:
x.counter = x.counter * 2
print(x.counter)
del x.counter
另一種為實例對象所接受的引用屬性是 方法。方法是“屬於”一個對象的函數。(在 Python 中,方法不止是類實例所獨有:其它類型的對象也可有方法。例如,鏈表對象有 append,insert,remove,sort 等等方法。然而,在後面的介紹中,除非特別說明,我們提到的方法特指類方法)
實例對象的有效名稱依賴於它的類。按照定義,類中所有(用戶定義)的函數對象對應它的實例中的方法。所以在我們的例子中,x.f 是一個有效的方法引用,因為 MyClass.f 是一個函數。但 x.i 不是,因為 MyClass.i 不是函數。不過 x.f 和 MyClass.f 不同,它是一個 方法對象 ,不是一個函數對象。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/287187.html