物件主要有三個特性,繼承、封裝、多型。python的核心。
1、多型、封裝、繼承
多型,就算不知道變數所引用的型別,還是可以操作物件,根據型別或物件的不同而表現出不同的行為。
這是乙個簡單的例子,add方法,,包裝了一下 + 函式。這就是多型。不管引數是什麼型別,使用add方法,都可以把他們+在一起。
封裝,封裝式對全域性作用域中其他區域隱藏多餘的資訊。和多型相似但是不同的概念,使用物件而不知道其細節。多型是不知道物件引用了什麼型別,而使用。
繼承,類可以繼承其他類的屬性和方法。
2、類class
類是一種物件,所有的物件都屬於某乙個類,稱類的例項(instance)
執行以後執行結果
2.1、特性、函式、方法
類中的方法和函式的區別在於,有沒有self引數。
方法(可以稱作,繫結方法)將它們的第乙個引數繫結到所屬的例項上,因此這個引數可以不必提供。
可以將特性方法,繫結到普通函式上,這樣就不會有特殊的seft引數了。
2.2、私有化
python中不直接支援私有化。在需要的方法和特性前面加算個下劃線(__)。即使加了下劃線還是可以訪問的,python在處理這些帶雙下劃線的特性和方法的時候。會把雙下劃線翻譯成_下劃線和類名的形式。
可以在類的內部訪問
外部直接訪問報錯
這種方式還是可以訪問私有特性和方法的
2.3、類的命名空間
所有位於class中的**都在特殊的命名空間中執行,這個命名空間就是類的命名空間(class namespace)。這個命名空間可由類中的所有成員訪問。
注意:並不是所有python程式設計師都不知道,類內部定義的就是執行的**塊。
在該**中,在類作用域內定義乙個可供所有成員(例項)訪問的變數,用來計算類的成員數量。
2.4、指定超類
將其他類的名稱寫到class語句後面括號內可以指定超類。
這裡的spamffilter類兩個特點:1,用提供新定義的方式過載了filter類的init方法。2.filter方法的定義是從filter類中拿過來的(繼承),所有不用重新定義。spam單詞的意思是:垃圾郵件
2.5、調查基類
2.6、多重繼承
乙個類可以有多個基類,在class語句後面的括號裡新增逗號,隔開多個。
這種行為稱為多重繼承(multiple inheritance)。
注意事項:乙個方法重多個超類中繼承(多個超類有相同名稱但作用不同的方法)時,根據(class語句中)繼承的順序,先繼承的方法會重寫後繼承的類中相同名稱的方法。
2.7、介面和內省
「介面」的概念與多型有關。在處理多型物件時,只要關心它的介面(或稱「協議」)即可---也就是公開的方法和特性。(不太理解,求指導)意思說,python沒有介面,基本是多型嗎?
python 正則學習筆記(慢慢更)
正則模組,re re.sub 用於替換字串的匹配項。如果沒有匹配到規則,則原字串不變。第乙個引數 規則 第二個引數 替換後的字串 第三個引數 字串 第四個引數 替換個數。預設為0,表示每個匹配項都替換 把 x00或 x01換成 temp x00 x01abcd x00 x00 ntp re.sub ...
python學習筆記 類和例項
類 類是一種資料結構,可用於建立例項。一般情況下,類封裝了資料和可用於該資料的方法 python類是可呼叫的物件,即類物件 類通常在模組的頂層進行定義,以便類例項能夠在類所定義的源 檔案中的任何地方被建立。例項初始化 instance classname args.類在例項化時可以使用 init 和...
Python學習筆記 類和物件
1.訪問屬性 python中預設物件的屬性和方法都是公開的,可直接通過點操作符 來進行訪問 為了實現私有的特徵,在python中只需在變數名或函式名前加上 兩個下劃線 則該變數或者該函式變為私有的。公有和私有 class person name 小賈 id 1 defsetname self,nam...