大神,Python中的"類型",是一個怎樣的概念?

額外的聲音


Python類和對象

類是用於創建對象的用戶定義的藍圖或原型。類提供了一種將數據和功能捆綁在一起的方法。創建一個新類將創建一種新的對象類型,從而可以創建該類型的新實例。每個類實例可以具有附加的屬性以維護其狀態。類實例還可以具有用於修改其狀態的方法(由其類定義)。

為了瞭解創建類的必要性,讓我們考慮一個示例,假設您想跟蹤可能具有不同屬性(如品種,年齡)的狗的數量。如果使用列表,則第一個元素可以是狗的品種,而第二個元素可以代表狗的年齡。假設有100條不同的狗,那麼您如何知道哪個元素應該是哪個?如果您想為這些狗添加其他屬性怎麼辦呢?

類創建一個用戶定義的數據結構,該結構擁有自己的數據成員和成員函數,可以通過創建該類的實例來訪問和使用它們。類就像對象的藍圖。

Python類的一些要點:

  • 類由關鍵字創建class。

  • 屬性是屬於類的變量。

  • 屬性始終是公共的,可以使用點(。)運算符進行訪問。例如:

    Myclass.Myattribute

在上面的示例中,class關鍵字表明您正在創建一個類,後跟該類的名稱(在本例中為“ Dog”)。

類對象

對象是類的實例。一個類就像一個藍圖,而一個實例是具有實際值的類的副本。這不再是個主意,而是一條真實的狗,就像七歲的哈巴狗。您可以有很多狗來創建許多不同的實例,但是如果沒有該類的指導,您會迷路,不知道需要什麼信息。

一個對象包括:

  • 狀態:它由對象的屬性表示。它還反映了對象的屬性。
  • 行為:它由對象的方法表示。它還反映了一個對象對其他對象的響應。
  • 身份:它為一個對象賦予唯一的名稱,並使一個對象能夠與其他對象進行交互。

當創建一個類的對象時,該類被稱為實例化。所有實例都共享類的屬性和行為。但是這些屬性的值(即狀態)對於每個對象都是唯一的。單個類可以具有任意數量的實例。

輸出:

mamal I'm a mamal I'm a dog

在上面的示例中,創建了一個對象,該對象基本上是一隻名為Rodger的狗。此類僅具有兩個類別的屬性,這些屬性告訴我們羅傑是狗和哺乳動物。

The self

類方法在方法定義中必須有一個額外的第一個參數。當我們調用方法時,我們沒有為該參數提供值,Python提供了它。

如果我們有一個不帶參數的方法,那麼我們仍然必須有一個參數。

這類似於C ++中的此指針和Java中的此引用。

當我們將此對象的方法稱為時myobject.method(arg1, arg2),Python會自動將其轉換為MyClass.method(myobject, arg1, arg2)–這就是所有特殊的self。

__init__方法

該__init__方法類似於C ++和Java中的構造函數。構造函數用於初始化對象的狀態。與方法類似,構造函數還包含在創建對象時執行的語句(即指令)的集合。實例化類的對象後立即運行。該方法對於您要對對象進行的初始化非常有用。

輸出:

Hello, my name is Nikhil

類和實例變量

實例變量用於每個實例唯一的數據,而類變量用於該類的所有實例共享的屬性和方法。實例變量是其值在構造函數或方法self 中分配的變量,而類變量是其值在類中分配的變量。

輸出:

Rodger details: Rodger is a dog Breed: Pug Color: brown Buzo

使用構造函數定義實例變量。

輸出:

brown

總的來說,對象是將變量和函數封裝到單個實體中的方法。對象從類中獲取變量和函數。類本質上是創建對象的模板。


你看我獨角獸嗎


用來具有相同的屬性和方法的對象集合,他定義了該集合中的每個對象所擁有的屬性和方法,對象是類的實例。


czfnice


在面向對象程序設計,類(英語:class)是一種面向對象計算機編程語言的構造,是創建對象的藍圖,描述了所創建的對象共同的屬性和方法。


類的更嚴格的定義是由某種特定的元數據所組成的內聚的包。它描述了一些對象的行為規則,而這些對象就被稱為該類的實例。類有接口和結構。接口描述瞭如何通過方法與類及其實例互操作,而結構描述了一個實例中數據如何劃分為多個屬性。類是與某個層[1]的對象的最具體的類型。類還可以有運行時表示形式(元對象),它為操作與類相關的元數據提供了運行時支持。支持類的編程語言在支持與類相關的各種特性方面都多多少少有一些微妙的差異。大多數都支持不同形式的類繼承。許多語言還支持提供封裝性的特性,比如訪問修飾符。類的出現,為面向對象編程的三個最重要的特性(封裝性,繼承性,多態性),提供了實現的手段。在現實世界中,經常有屬於同一個類的對象。例如,某輛自行車只是世界上很多自行車中的一輛。


在面向對象軟件中,也有很多共享相同特徵的不同的對象:矩形、僱用記錄、視頻剪輯等。可以利用這些對象的相同特徵為它們創建一個藍圖。對象的軟件藍圖稱為類。類是定義同一類所有對象的變量和方法的藍圖或原型。例如,可以創建一個定義包含當前檔位等實例變量的自行車類。這個類也定義和提供了實例方法(變檔、剎車)的實現。實例變量的值由類的每個實例提供。因此,當創建自行車類以後,必須在使用之前對它進行實例化。當創建類的實例時,就創建了這種類型的一個對象,然後系統為類定義的實例變量分配內存。然後可以調用對象的實例方法實現一些功能。相同類的實例共享相同的實例方法。除了實例變量和方法,類也可以定義類變量和類方法。


可以從類的實例中或者直接從類中訪問類變量和方法。類方法只能操作類變量 - 不必訪問實例變量或實例方法。系統在第一次在程序中遇到一個類時為這個類創建它的所有類變量的拷貝 - 這個類的所有實例共享它的類變量。對象和類的說明其實很相似。實際上,類和對象之間的差別經常是一些困惑的起源。在現實世界中很明顯,類不是它描述的對象 - 自行車的藍圖不是自行車。但是在軟件中就有點難區分類和對象。這部分是由於軟件對象只是現實世界的電子模型或抽象概念。但是也由於很多人用“對象”指類和它們的實例這兩者。


如果還不明白歡迎私信我哦,更多IT知識歡迎關注


分享到:


相關文章: