1. 程式人生 > >分析python程式碼中幾處難點

分析python程式碼中幾處難點

最近在程式碼中見到了
諸如此類的句子,頗感疑惑,見識少,沒辦法,遂解之。

@staticmethod

在類中若對方法用上述裝飾器修飾,則表明這個方法在其他類中呼叫不需要例項化。
即靜態方法,類似於c#,java裡的 static 方法。
這裡寫圖片描述

__metaclass__ = abc.ABCMeta
@abstractmethod

上述是兩個語句是一起出現的,是宣告抽象基類最簡單的方式。
意思就是說,在基類裡宣告的抽象方法,需要在子類裡實現。
比如基類Foo的fun方法被@abstractmethod裝飾了,所以Foo不能被例項化;
這裡寫圖片描述
這裡寫圖片描述
子類SubA沒有實現基類的fun方法也不能被例項化;
這裡寫圖片描述


子類SubB實現了基類的抽象方法fun所以能例項化。
這裡寫圖片描述

這樣只有呼叫子類的時候才可以用這個方法。
若不同的子類有不同的實現方式,則可嘗試用這個方法。
並且在python3和2中略有不同。

這裡寫圖片描述
這裡寫圖片描述

    def __init__(self):
        super(MyClass,self).__init__()

上述這一句是基礎概念,子類的建構函式里加上super可以自動找到初始化父類的方法。