Python類和對象_自定義類與屬性


類和對象,主要是學習【面向對象編程】了,這種編程方法中,用戶可以自定義類型來同時對代碼和數據進行整理。

一,用戶自定義類型

Python 有很多的內置類型,現在我們來自定義一個新的類型。

比如,創建一個叫 Point 的類,用於表示一個二維空間中的點。

數學符號上對點的表述一般是一個括號內有兩個坐標,坐標用逗號分隔開。比如,(0,0)就表示為原點,(x,y)就表示了該點從原點向右偏移 x,向上偏移 y。

事實上,我們可以用好幾種方法來在 Python 中表示一個點:

• 可以把坐標存儲成兩個單獨的值,x 和 y。

• 可以把坐標存儲成列表或者元組的元素。

• 可以創建一個新的類型,用對象來表示點。

1.用戶自定義的類型也被叫做一個類,如下所示:

>>> class Point:

...    """Represents a point in 2-D space."""

... 

頭部代碼的意思是表示新建的類名字叫 Point。然后類的體內有一個文檔字符串,解釋類的用途。在類的定義內部可以定義各種變量和方法。

聲明一個名為 Point 的類,就可以創建該類的一個對象:

>>> Point

<class '__main__.Point'>

因為 Point 是在頂層位置定義的,所以全名就是__main__.Point。

2.類的對象就像是一個創建對象的工廠。創建一個 Point,就可以像調用函數一樣調用 Point。

>>> blank = Point()

>>> blank

<__main__.Point object at 0x10abe71d0>

返回值是到一個 Point 對象的引用,剛剛賦值為空白了。

創建一個新的對象也叫做實例化,這個對象就是類的一個實例。

用 Print 輸出一個實例的時候,Python 會告訴你該實例所屬的類,以及在內存中存儲的位置 (前綴為0x 意味十六進制)

每一個對象都是某一個類的一個實例,所以【對象】和【實例】可以互換來使用。談論用戶自定義類型的時候,使用【實例】這個詞更貼切一點。

二,屬性

1.用點號可以給實例進行賦值:

>>> blank.x = 3.0

>>> blank.y = 4.0

這一語法形式就和從模塊中選取變量的語法是相似的,比如 math.pi 或者 string.whitespace。

然而在本例中,我們用點號實現的,是對一個對象中某些特定名稱的元素進行賦值,這些元素也叫做屬性。

用於展示一個類及其屬性的狀態圖也叫做類圖,下面的圖表展示了上面這些賦值的結果:

變量 blank 指代的是一個 Point 對象,該對象包含兩個屬性x和y,每個屬性都指代了一個浮點數。 

讀取屬性值可以用如下這樣的語法: 

>>> blank.y

3.0

>>> y = blank.y

>>> y

3.0

這里的表達式 blank.y 的意思是,到 blank 所指代的對象中,讀取 y 的值。

在這個例子中,我們把這個值賦值給一個名為 y 的變量。這里的變量 y 和類的屬性y 並不沖突。 

2.另外,點號可以隨意在任意表達式中使用,比如:

>>> blank.x = 3.0

>>> blank.y = 4.0

>>> '(%g, %g)' % (blank.x, blank.y)

'(3, 4)'

>>> import math

>>> distance = math.sqrt(blank.x**2 + blank.y**2)

>>> distance

5.0

3.我們還可以把實例作為一個參數來使用,比如:

>>> def print_point(p):

...     print('(%g, %g)' % (p.x, p.y))

... 

>>> print_point(blank)

(3, 4)

這個例子中,print_point 這個函數就接收了一個點作為參數,然后顯示點的平面數值位置。 

在函數內部,p 是blank 的一個別名;所以,如果函數內部對 p 進行了修改,blank 也會發生相應的改變。 

結束。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM