python预定义_【Python】python类中方法的预定义
知乎問題:
像這個圖片里面顯示的,self.prediction首先聲明了下然后下面給出了定義,然后optimize又調用這個函數但是沒有用self.prediction()這樣的方式而是像用變量一樣直接用self.prediction,,像請教一下這是什么操作?
知乎回答:
python中變量和函數都不需要提前聲明,函數直接定義就可以了。這里提前聲明不知道是寫的人習慣了其它語言,還是為了可讀性。
在python中一切皆對象,函數也不例外。因此可以將函數綁定到變量上或者傳遞,使用時后面加上()就可以調用。
在下面的方法中self.prediction后面沒有加(),但是又把它和一個浮點數相加,說明此時它的值是一個數字。如果是平常的寫法,函數對象不可能與數字相加。
我推測關鍵處在prediction定義時的裝飾器,它可能有類似于property裝飾器的作用,將self.prediction轉化成了一個屬性,這樣不需要加()也可以返回值了。
答者補充:
因為Python語言的動態性,在寫代碼時,代碼檢查工具可能認為self沒有這樣的屬性,這時你預先聲明了,它就不會報錯。
作者:松直
python修飾器
要理解python的裝飾器,我們首先必須明白在Python中函數也是被視為對象。函數既然作為一個對象,因此:
1. 其可以被賦給其他變量
2. 其可以被定義在另外一個函數內
3. 作為參數傳遞給函數
其實它可被視為封裝器。也就是說,它能夠讓你在裝飾前后執行代碼而無須改變函數本身內容。
總結
以上是生活随笔為你收集整理的python预定义_【Python】python类中方法的预定义的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python whl_python wh
- 下一篇: linux重装hal服务安装,linux