python學習隨筆6

2021-09-26 14:54:31 字數 1607 閱讀 1414

從上面的那張圖中可以發現,我們所說的類應該是包含屬性(變數)和方法(函式),但是上圖中並沒有體現出這兩者。但我個人覺得def__init__(self)就是屬性的一種變形式,雖然圖中寫的是:實質為方法,人家確實就是函式嘛!然而這時我個人目前的理解。為什麼這麼理解呢,我給出了一下是兩個理由:

1、init通常是用來定義一些變數的初始化值,屬性不就是變數嗎?

2、init定義變數時,需要賦初值,這裡的初值指的是在def那一行中給值,初值數量定義變數數少乙個,少的就是那個self。如definit(self,a =0 , b= 0, c = 0),這邊定義了a, b, c 三個變數,那麼在『方法體』內也需要定義三個變數,定義的形式為self.a = a。為什麼只這種形式呢?我的理解是:在程式跑起來是,init是自動被載入的,所以在例項化物件的時候需要賦初值,而這個值就是通過引數a傳遞給self.a,在之後的方法中就可以使用self.a這個引數。看下面一張圖關於引數傳遞過程:

如果在理由2中定義的三個變數但是都沒有給賦初值或賦值的數量不夠多,就會出現typeerror:init() takes 1 positional argument but 3 were given。大概的意思就是init中需要給三個初值,你給的不夠唄。

然而還存在乙個問題,什麼問題。self.a我該怎麼去用它呢?我們定義了self.a肯定是要使用的。下面我們就來聊一聊關於引數的使用。

初學者看教程的時候都覺得這不很簡單,這有什麼講。但是對於我這種程式設計菜鳥我覺得還是有必要記錄一下,哈哈。相信不少初學者聽說這個init功能很強大,所以總想著在自己的程式裡面也使用,提高程式的逼格,反正我就是怎麼想的。

剛開始的時候最容易出現的問題就是,使用了init發現即使我怎麼改變init之後的方法(定義的函式)發現在init中定義的引數值就是原始定義的,怎麼都不變。頓時不想要高逼格的init了。**出現這個問題是主要是因為你在例項化物件的時候引數沒有給值,所以你在init中的所給定的引數值會雷打不動,如definit(self.a =0 , b= 0, c = 0)它的a, b, c永遠都是0,如果你 xx = ***x(1, 2, 3),此時你的self.a = 1, self.b = 2, self.c = 3。**簡單說明一下,xx表示實力物件名稱,***表示類名稱。此時你的self.a = 1, self.b = 2, self.c = 3就會隨著編譯的順序往下傳。**也就是說你要改變self.a, self.b, self.c 的值,你必須每次都得xx = ***x(1, 2, 3)這種形式去做。**如下圖所示:

unity steamVR學習隨筆6

一 直接抓取 1.控制手柄抓取基礎 1.向互動的目標物體掛載指令碼vrtk interactable object並新增碰撞體 vrtk interactable object指令碼解析 2.控制器抓取物體時消失 3.控制手柄震動 向互動物體新增vrtk interact haptics指令碼 vr...

python學習隨筆

初始學習 菜雞乙個 1 用python提取excel資料 data pd.read excel r c users limaoli desktop ybsj.xlsx 這加了乙個r data np.array data 把列表轉換為陣列,方便後面的提取 datamat data 0 3 這個提取的是...

Python 學習隨筆

1.20200421 print輸入respone不能換行的問題 import urllib.parse import urllib.request data bytes urllib.parse.urlencode encoding utf8 respone urllib.request.urlo...