每天一點python python物件導向

2021-07-07 04:27:30 字數 2127 閱讀 5393

**:

一.如何定義乙個類

在進行python物件導向程式設計之前,先來了解幾個術語:類,類物件,例項物件,屬性,函式和方法。

類是對現實世界中一些事物的封裝,定義乙個類可以採用下面的方式來定義:

class

classname:

block

注意類名後面有個冒號,在block塊裡面就可以定義屬性和方法了。當乙個類定義完之後,就產生了乙個類物件。類物件支援兩種操作:引用和例項化。引用操作是通過類物件去呼叫類中的屬性或者方法,而例項化是產生出乙個類物件的例項,稱作例項物件。比如定義了乙個people類:

class

people:

name = '

jack'#

定義了乙個屬性

#定義了乙個方法

defprintname(self):

print self.name

people類定義完成之後就產生了乙個全域性的類物件,可以通過類物件來訪問類中的屬性和方法了。當通過people.name(至於為什麼可以直接這樣訪問屬性後面再解釋,這裡只要理解類物件這個概念就行了)來訪問時,people.name中的people稱為類物件,這點和c++中的有所不同。當然還可以進行例項化操作,p=people( ),這樣就產生了乙個people的例項物件,此時也可以通過例項物件p來訪問屬性或者方法了(p.name).

理解了類、類物件和例項物件的區別之後,我們來了解一下python中屬性、方法和函式的區別。

在上面**中注釋的很清楚了,name是乙個屬性,printname( )是乙個方法,與某個物件進行繫結的函式稱作為方法。一般在類裡面定義的函式與類物件或者例項物件繫結了,所以稱作為方法;而在類外定義的函式一般沒有同物件進行繫結,就稱為函式。

二.屬性

在類中我們可以定義一些屬性,比如:

class

people:

name = 'jack'

age =12

p =people()

print p.name,p.age

定義了乙個people類,裡面定義了name和age屬性,預設值分別為'jack'和12。在定義了類之後,就可以用來產生例項化物件了,這句p = people( )例項化了乙個物件p,然後就可以通過p來讀取屬性了。這裡的name和age都是公有的,可以直接在類外通過物件名訪問,如果想定義成私有的,則需在前面加2個下劃線 ' __'。

class

people:

__name = 'jack'

__age =12

p =people()

print p.__name,p.__age

這段程式執行會報錯:

提示找不到該屬性,因為私有屬性是不能夠在類外通過物件名來進行訪問的。在python中沒有像c++中public和private這些關鍵字來區別公有屬性和私有屬性,它是以屬性命名方式來區分,如果在屬性名前面加了2個下劃線'__',則表明該屬性是私有屬性,否則為公有屬性(方法也是一樣,方法名前面加了2個下劃線的話表示該方法是私有的,否則為公有的)。

三.方法

在類中可以根據需要定義一些方法,定義方法採用def關鍵字,在類中定義的方法至少會有乙個引數,,一般以名為'self'的變數作為該引數(用其他名稱也可以),而且需要作為第乙個引數。下面看個例子:

如果對self不好理解的話,可以把它當做c++中類裡面的this指標一樣理解,就是物件自身的意思,在用某個物件呼叫該方法時,就將該物件作為第乙個引數傳遞給self。

每天一點python xlrd

xlrd是python語言中讀取excel的擴充套件工具,可以實現指定表單 指定單元格的讀取。1.讀取excel檔案 workbook xlrd.open workbook file.xls 2.獲取excel中表單數量 workbook.nsheets 3.獲取excel中的乙個表單 workbo...

每天一點C (一)

在搭建好c 的環境後,我們就可以開始進行c 的學習了,從基礎的語法開始時!首先我們要知道乙個 c 程式主要包括以下部分 空間宣告 class class 方法 class 屬性 乙個 main 方法 語句 表示式 using system 執行結果就是顯示 hello world 我的第乙個c 程式...

每天一點python assert斷言

assert 主要用於測試 1 assert語句用來宣告某個條件是真的。2 如果你非常確信某個你使用的列表中至少有乙個元素,而你想要檢驗這一點,並且在它非真的時候引發乙個錯誤,那麼assert語句是應用在這種情形下的理想語句。3 當assert語句失敗的時候,會引發一assertionerror。測...