學習筆記10

2021-10-09 21:13:03 字數 3256 閱讀 8554

類與物件

物件=屬性+方法

用class定義python類,然後接類的名稱和冒號。

python的self相當於c++的this指標。 self是類中乙個額外的第乙個引數名稱 在呼叫方法時 無需明確提供與引數self相對應的引數。

魔法方法:init(self[,param1,param2…])這個方法在類例項化時會自動呼叫。

python在變數名或者函式名前加 __ 函式或變數就會成為私有的元素。但是python的私有並不是真正的私有,仍然可以通過其他的輸出方式來輸出。python的私有只是把變數或者函式的名稱進行了改變。

python支援多繼承,但是盡量不要使用多繼承,容易引起混亂。

類:類物件:建立乙個類,就是乙個物件在記憶體開闢了一塊空間,稱為類物件,類物件只有乙個。

例項物件:通過例項化建立的物件,稱為例項物件,例項物件可以有多個。

類屬性:類裡面方法之前定義的變數就為類屬性。多個例項物件之間共享乙個類屬性。

例項屬性:例項屬性和具體的某個例項物件有關係,只能在自己的物件裡面使用。

屬性和方法名相同會使屬性覆蓋方法。

python要求方法需要有例項才能被呼叫,這就是python的繫結概念。

直接訪問__dict__可以獲取python物件的資料屬性。

內建函式(bif)

issubclass(class,classinfo)判斷class是否為classinfo的子類。 乙個類是其自身的子類。

isinstance(object,classinfo)判斷乙個物件是否為乙個已知的型別。

type()不考慮繼承關係,isinstance考慮繼承關係。

hasattr(object,name)判斷物件是否包含對應的屬性。

getattr(object,name[,default])用於返回乙個物件屬性值。

setattr(object,name,value)設定乙個屬性值,屬性不一定存在。

delattr(object,name)刪除乙個屬性。

class property([fget[,fset[,fdel[,doc]]]])在新式類中返回屬性值。

??????

在方法前面加上 __

沒有在括號中新增self關鍵字

class

ticket()

:def

__init__

(self, adult, kid, day)

: self.adult = adult

self.kid = kid

self.day = day

self.price =

100def

sum_price

(self)

:if self.day in

range(1

,6):

print

("總票價為: %d 元"

%(self.price *

(self.adult+self.kid/2)

))else

:print

("總票價為: %d 元"

%(self.price*

1.2*

(self.adult+self.kid/2)

))p = ticket(3,

1,5)

p.sum_price(

)

魔法方法

魔法方法總是被雙下劃線包圍。

定製序列

如果定製的容器不可變,只定義__len__()和__getitem__()方法。

如果可變還需要定義__setitem__()delitem()

練習題

1.new:建構函式,建立並返回乙個例項物件

init:初始化函式,在建立例項物件為其賦值時使用

str:在將物件轉換成字串 str(物件) 測試的時候,列印物件的資訊

repr_:str的備胎,在有__str__的時候執行__str__,沒有實現__str__的時候,執行__repr__

getitem:定義獲取容器中元素的行為

setitem:定義設定容器中指定元素的行為

2.

import time

class

timer()

:def

__init__

(self)

:print()

self.__info =

'未開始計時!'

self.__kaishi =

none

self.__jieshu =

none

self.__jg =

0def

__str__

(self)

:return self.__info

def__repr__

(self)

:return self.__info

defstart

(self)

:print

('計時開始'

) self.__kaishi = time.localtime(

)def

stop

(self):if

not self.__kaishi:

print()

return

self.__jieshu = time.localtime(

) self.__jg = time.mktime(self.__jieshu)

- time.mktime(self.__kaishi)

self.__info =

'共執行了%d秒'

% self.__jg

print

('計時結束!'

)return self.__jg

def__add__

(self, other)

:return

'共執行了%d秒'

%(other.__jg + self.__jg)

學習筆記10

2.塊裝置i o棧 2.1基本概念 介紹塊裝置的i o棧之前,我們先來了解一下塊i o棧的幾個基本概念。1 bio bio是通用塊層i o請求的資料結構,表示上層提交的i o請求,乙個bio包含多個page,這些page必須對應磁碟上一段連續的空間。由於檔案在磁碟上並不連續存放,檔案i o提交到塊裝...

python numpy 學習筆記 10

1.矩陣的相關操作 求逆,求解線性方程組,求解特徵值,求解特徵向量,奇異值分解 coding utf 8 from numpy import a mat 0 1 2 1 0 3 4 3 8 inverse linalg.inv a print inverse print a.i print a in...

linux學習筆記10

find搜尋命令 which 查詢可執行檔案的絕對路徑。它只是用來查詢path環境變數中出現的路徑下的可執行檔案,比如我們不知道某個命令的絕對路徑which一下就知道了。whereis b 只找binary檔案 m 只找在說明檔案manual路徑下的檔案。u 沒有說明檔的檔案。find搜尋檔案 fi...