Python 中的 @staticmethod和@classmethod(關鍵詞:Python/靜態方法/類方法/@staticmethod/@classmethod)
結合書籍,我的理解
靜態方法: 出現在類中,第 1 個引數不是例項、也不是類, 由 @staticmethod 裝飾的方法;
類方法: 出現在類中,第 1 個引數不是例項、而是類, 由 @classmethod 裝飾的方法。
class C:
@staticmethod
def smeth(x):
print(x)
@classmethod
def cmeth(cls, x):
print(cls, x)
輸出:
>>> c1 = C() >>> c1.smeth(1) 1 >>> C.smeth(2) 2 >>> c1.cmeth(1) <class 'q.C'> 1 >>> C.cmeth(1) <class 'q.C'> 1
參考文獻:
- 《Python 學習手冊(第 4 版)》 - ;
- 3 @staticmethod和@classmethod。
相關推薦
Python 中的 @staticmethod和@classmethod(關鍵詞:Python/靜態方法/類方法/@staticmethod/@classmethod)
結合書籍,我的理解 靜態方法: 出現在類中,第 1 個引數不是例項、也不是類, 由 @staticmethod 裝飾的方法; 類方法: 出現在類中,第 1 個引數不是例項、而是類, 由 @classmethod 裝飾的方法。 class C: @staticmetho
Python 中 apply 內建函式(關鍵詞:Python/內建函式/apply)
>>> apply <built-in function apply> >>> def a(): ... print 'i am a' ... >>> apply(a) i am a >>> de
Python 中的類變數和例項變數(關鍵詞:Python/類變數/例項變數)
類變數: class 語句的頂層進行賦值的變數,會被附加在類中,被所有例項所共享; 例項變數:附加在例項上的變數,不被共享,可通過這 2 種方式建立或修改: aInstance.name = sth 的形式; 類的例項方法中,self.name = sth 的形式。
Python 中的 zfill()(關鍵詞:Python/zfill)
描述 Python zfill() 方法返回指定長度的字串,原字串右對齊,前面填充0。 語法 zfill()方法語法: str.zfill(width) 引數 width – 指定字串的長度。原字串右對齊,前面填充0。 返回值 返回指定長度的字串。 例項
Python 中的 *args and **kwargs(關鍵詞:Python/)
* 和 ** 讓函式支援接收任意數目的引數,有函式定義和函式呼叫這 2 種情況。 在函式定義中, (1)*args 收集任意多的 位置引數 到 1 個元組 args 中; (2)**kwargs 收集任意多的 關鍵字引數 到 1 個字典 kwargs 中; (3)還可以混合位置引數、
Python 中的 super(關鍵詞:Python/super)
super() super() 可以實現在子類中呼叫父類的方法 # Python 2 >>> class Base(object): def __init__(self): print "Base initing..." >>>
python中xrange和range(轉)
log item .py 對象 nbsp net range all file 說到序列,我們第一想到的是一組有序元素組成的集合。同時,每個元素都有唯一的下標作為索引。 在Python中,有許多內界的序列。包括元組tuple,列表list,字符串str等。上面提到的序列
Python 之 property(關鍵詞:Python/property/@property/特性)
特性(property) 特性協議允許我們把 1 個特定屬性的訪問操作(讀取、設定、刪除)指向我們提供的函式或方法,使得我們能夠插入在屬性的訪問操作的時候自動允許的程式碼,還可以為屬性提供文件。 property class Person: def __init__(sel
(四)Python中的“四大才子”(字符串、列表、字典、集合)
不可 inf nbsp 創建 重新 指向 分享圖片 table 數據類型 前戲:在python中把數據序列分為可變(mutable)和不可變(immutable)兩種 不可變:string、int、float、tuple 特點
排序演算法之選擇排序(關鍵詞:資料結構/演算法/排序演算法/選擇排序)
假定:有 1 個亂序的數列 nums ,其中有 n 個數。 要求:排好序之後是 從小到大 的順序。 選擇排序演算法 程式碼 from swap import swap def select_sort(nums): n = len(nums) i = 0 while
排序演算法之插入排序(關鍵詞:資料結構/演算法/排序演算法/插入排序)
假定:有 1 個亂序的數列 nums ,其中有 n 個數。 要求:排好序之後是 從小到大 的順序。 插入排序演算法 程式碼 def insert_sort(nums): i = 1 n = len(nums) while i <= n-1: j = i
排序演算法之氣泡排序(關鍵詞:資料結構/演算法/排序演算法/氣泡排序)
假定:有 1 個亂序的數列 nums ,其中有 n 個數。 要求:排好序之後是 從小到大 的順序。 氣泡排序演算法 程式碼 from swap import swap def bubble_sort(nums): n = len(nums) for i in rang
排序演算法之快速排序(關鍵詞:資料結構/演算法/排序演算法/快速排序)
快速排序 實現 def partition(nums, left, right): middle = (left+right) // 2 pivot = nums[middle] swap(nums, middle, right) # 現在主元 pivot 等於 num
排序演算法之歸併排序(關鍵詞:資料結構/演算法/排序演算法/歸併排序)
假定:有 1 個亂序的數列 nums ,其中有 n 個數。 要求:排好序之後是 從小到大 的順序。 歸併排序演算法 程式碼 def merge(a, b): res = [] A = 0 B = 0 while A<len(a) and B<len(b
設計模式之單例模式(關鍵詞:設計模式/單例模式/單件模式)
設計模式 單例模式 定義 單例模式:允許一些物件中只存在 1 個例項。 類裝飾器版本 1:使用 1 個全域性字典,儲存所有類的例項。 instances = {} def getInstances(aClass, *args): if aClass not in i
排序演算法之堆排序(關鍵詞:資料結構/演算法/排序演算法/堆排序)
假定:有 1 個亂序的數列 nums ,其中有 n 個數。 要求:排好序之後是 從小到大 的順序。 堆排序演算法 原理 先將原始的堆,調整為最大堆: 從倒數第 1 個有子結點的結點(下標為 index = n//2 - 1)開始,將以結點 index 為根結點的子堆
交叉連結串列求交點(關鍵詞:連結串列/交叉連結串列/交點/交集)
交叉連結串列求交點 實現 def getIntersectionNode(self, headA, headB): """ :type head1, head1: ListNode :rtype: ListNode
如何抓取你所看到的網頁中的js特效(如:多圖片上傳的js特效)
首先在谷歌瀏覽器中搜索你想要的js特效(如:多圖片上傳功能的js特效),找到之後開啟對應的頁碼,按F12開啟除錯介面,如下:找到除錯介面的Source選項,然後對應的Network --> iframe,然後開啟下面的原始碼檔案,如圖片:img選項為:在圖片上點選右鍵的
演算法課堂實驗報告(二)——python遞迴和分治(第k小的數,大數乘法問題)
python實現遞迴和分治 一、開發環境 開發工具:jupyter notebook 並使用vscode,cmd命令列工具協助程式設計測試演算法,並使用codeblocks輔助編寫C++程式 程式語言:python3.6 二、實驗目標 1. 熟悉遞迴和分治演算法實現的
Python中@property和@classmethod和@staticmethod
return 被調用 命令 成了 aps display init 命名空間 類的方法 前戲 首先,先要弄清楚一個類裏面的,各個組成部分都應該怎麽稱呼。 - 註:可能叫法會不太一樣。 關於@property 顧名思義:它的意思為‘屬性’。