Python學習筆記 day7 類

2021-09-08 07:18:29 字數 4180 閱讀 3784

物件導向最重要的概念就是類(class)和例項(instance),比如球類,而例項是根據類建立出來的乙個個具體的「物件」,每個物件都擁有相同的方法,但各自的資料可能不同。在python中,定義類是通過class關鍵字:

class people(object):    # 自定義乙個people類,括號內的object表示當前類繼承object類

'''this is my first object''' # 類的注釋

name = 'daxin' # 類的屬性

age = 18

def eat(self): # 類的方法

print(' eating !'.format(self.name))

ren = people() # 例項化乙個ren物件

ren.eat() # 呼叫物件的方法

object是所有類的父類,不寫的話,預設繼承object類,當然函式可以包含注釋,類也可以,在類中使用三個單引號表示注釋。

__init__ 建構函式,在生成物件時呼叫。由於類可以起到模版的作用,因此,可以在建立例項的時候,把一些我們認為必須繫結的屬性新增進去,通過定義乙個特殊的__init__方法,我們就可以在建立例項的時候,把自定義的屬性繫結上。

class people(object):    

'''this is my first object'''

def __init__(self,name,age): # 類的建構函式,除了self意外的引數都需要在例項化的時候傳遞進去

self.name = name # 物件的name屬性

self.age = age # 物件的age屬性

def eat(self):

print(' eating !'.format(self.name))

ren = people('daxin',18)

ren.eat()

注意到:__init__方法的第乙個引數永遠是self,表示建立例項本身,因此,在__init__方法內部,就可以把各種屬性繫結到self,因為self指向了建立的例項本身。

當我們定義乙個class的時候,可以從某個現有的class繼承,新的class稱為子類(subclass),而被繼承的class稱為基類、父類或超類(base class、super class)。

子類具有父類的屬性和方法,還記得我們之前建立的people類嗎,它也是繼承了object類的。

class people(obejct):     # 父類表示人類

pass

class yelloman(people): # 繼承了people類的黃種人

pass

class chinapeople(yelloman,people) # 同時繼承people,yelloman的中國人

pass

注意:在繼承種類的構造(__init__())方法不會自動呼叫,需要在子類的構造方法種親自呼叫

呼叫方法時,首先查詢子類的方法,如果沒有才會去父類中查詢。

通過繼承我們可以得到父類的各種屬性或者功能,但是需要注意的是父類的__init__函式不會在繼承的時候被執行, 並且如果我們想重定義父類中的某個函式,該怎麼辦呢?

class people(object):   

def __init__(self,name,age):

self.name = name

self.age = age

def eat(self):

print(' eating !'.format(self.name))

class ren(people):

def __init__(self,name,age,***):

super(ren, self).__init__(name,age) # 使用super執行父類的__init__方法,並且傳遞name,age 給父類的init函式

self.*** = ***

def get_name(self):

return self.name

def get_age(self):

return self.age

def get_***(self):

return self.***

def eat(self): # 如果存在和父類同名的函式,會直接覆蓋父類函式

print('hello world')

a = ren('daxin',18,'men')

print(a.get_name())

print(a.get_age())

print(a.get_***())

a.eat()

類的屬性,可以稱為成員變數,類的方法,可以稱為成員函式。

建立物件的過程稱之為例項化:當乙個物件被建立後,包含三個方面的特性:物件控制代碼、屬性和方法。

控制代碼用於區分不同的物件(例項化出來的物件的名稱可以稱之為控制代碼)

物件的屬性和方法與類中的成員變數和成員函式對應

obj = myclass()  # 建立類的乙個例項(物件)

# 通過物件來呼叫方法和屬性

類的屬性按照使用範圍分為共有屬性和私有屬性,類的屬性範圍取決於屬性的名稱。

- 共有屬性:在類中和類外都能呼叫的屬性

- 私有屬性:不能在類外呼叫的屬性

定義方式:以'__'雙下滑線開始的成員變數就是私有屬性

- 可以通過instance._classname__attribute方式訪問

- 內建屬性:由系統在定義類的時候預設新增的,又前後雙下劃線構成,(__dict__,__module__)

例子:

class people(object):

color = 'yellow'

__age = 30

def say(self):

self.color = 'back'

print self.color

print self.__age

ren = people()

ren.say()

ren.color = 'white' ②

ren.__dict__

people.__dict__ ③

ren.__age ①

# ①:由於__age是內部變數 ,所以無法在class外部呼叫,我們一般把類的私有屬性,在類的成員函式中呼叫,這樣我們就可以在外部來呼叫類的成員函式來呼叫內部變數,或者使用ren._people__age注意累的名字前要加_,一般只在測試用!

# ② 通過例項化的物件,我們就可以去修改物件的屬性,但是不會影響類的成員屬性

# ③ __dict__內建函式,通過物件呼叫它,會把成員函式中的變數,以字典的形式儲存,如果通過類呼叫它,它會列出類中的所有執行過程中產生的變數,並且以字典儲存。

既以__開頭,以__結尾的方法,稱之為內建方法

1、__str__

用於類被例項化後,直接列印例項化物件時,顯示的提示資訊,注意,這裡必須要用return

def __str__(self):

return 'this is people object'

2、建構函式 __init__

用於初始化類的內部狀態

def __init__(self,name,age): -->可以新增引數

self.name = name

self.age = age --> 初始化的時候,自動賦值的屬性

self.talk() -->可以在初始化的時候,直接執行某些方法,用於在例項化的時候,自動執行

3、析構函式 __del__

用於釋放物件占用的資源,在指令碼執行完畢後,自動進行資源釋放(比如在建構函式中開啟了某些檔案,那麼就可以在析構函式中關閉這些檔案)

def __del__(self):

print('bye bye')

posted @

2017-11-06 21:38

dahlhin 閱讀(

...)

編輯收藏

Python小白學習筆記 day7

第七章 python檔案和資料格式化 學習筆記 對檔案操作完成後即使不關閉程式也不會報錯,所以可以不關閉檔案 將乙個檔案與程式中的物件關聯起來的過程,稱為檔案開啟 csv檔案的特點 1.非二進位制檔案,而是純文字格式,通過單一編碼標識字元 2.以行為單位,開頭不留空行,行之間沒有空行 3.每行表示乙...

Python全棧學習筆記day 7

lis 11,22,33,44,55 for i in range len lis print i del lis i print lis 刪除奇數字 第一種lis lis 2 print lis 第二種l1 for i in lis if lis.index i 2 0 lis l1 print ...

python學習筆記 day7筆記

一 模組相關 匯入模組 1 import xx import模組實質就是把這個python檔案從頭到尾執行一遍 2 import模組查詢模組的順序 先從當前模組下查詢,如果當前目錄沒找到就從sys.path裡找,以上兩個目錄都找不到,那就報錯 二 redis操作 excel redis 關係型資料庫...