python是物件導向的語言。
7.1 物件的魔力
7.1.1 多型
不管是字串還是列表,count()函式都可以正常工作。
>>> ['ab','b','c'].count('c')
1>>> 'abc'.count('c')
1下面的加號 + 運算子對於整數和列表都可以起作用,而且行為不同:
>>> 1 +2
3>>> 'fsafda' + 'fsdfs'
'fsafdafsdfs'
7.1.2 封裝
7.1.3 繼承
7.2 類和型別
7.2.1 類到底是什麼
7.2.2 建立自己的類
self:類自動的將自己作為第乙個引數傳遞進去,代表物件本身。
self引數事實上正是方法和函式的區別。
>>> classperson:
defsetname(self, name):
self.name =name
defgetname(self):
return
self.name
defgreet(self):
print('
hello world ! i am %s
' %self.name)
>>> foo =person()
>>> bar =person()
>>> foo.setname("
jordan")
>>> bar.setname('
kobe')
>>>foo.greet()
hello world ! i am
jordan
>>>bar.greet()
hello world ! i am kobe
7.2.3 特性、函式和方法
預設情況下,程式可以從外部訪問乙個物件的特性。
python並不直接支援私有方法。但是有一些小技巧可達到私有特性的效果。
為了讓方法或者變數變為私有(從外部無法訪問),只要在它的名字前面加上雙下劃線即可:
幕後是這麼做的:以雙下劃線開始的名字都被翻譯成前面加上單下劃線和類名的形式,所以還是可以在類的外部呼叫這些私有方法和變數(這樣做不好)。
如果不需要使用這種方法但是又想讓其他物件不要訪問內部資料,那麼可以使用單下劃線。這只是個習慣,但有實際效果。例如,前面有下劃線的名字都不會被帶星號的import語句(from module import *)匯入。
7.2.4 類的命名空間
>>> def foo(x): return x*x>>> foo(5)
25>>> foo2 = lambda x: x*x
>>> foo2(5)
25
>>> class c:
print('class c being defined')// 類內部的函式也可以不用def定義,可以直接寫執行語句
class c being defined
>>> classmembercounter:
members =0 //類的作用域中定義了供所有成員訪問的變數,用來計算類的成員數量。
definit(self):
membercounter.members += 1
>>> m1 =membercounter()
>>>m1.init()
>>>membercounter.members
1>>> m2 =membercounter()
>>>m2.init()
>>>membercounter.members
2
7.2.5 指定超類
class spamfilter(filter) //將其他類名寫在class語句後的圓括號內可以指定超類。
7.2.6 檢查繼承
issubclass函式可以檢查乙個類是否是另外乙個類的子類
issubclass(spamfilter, filter) : 判斷spamfilter是否是filter的子類。
spamfilter.__bases__ : 得到已知類的基類。
isinstance(s, spamfilter)
7.2.7 多個超類
class talkingcalculator(calculator, talker) // python允許繼承自多個基類,多重繼承
多重繼承的兩個類如果有方法同名,那麼先繼承的類的方法會覆蓋後繼承的類的方法。
7.2.8 介面和內省
7.3 一些關於物件導向設計的思考
Python學習筆記(七)更加抽象
本章主要介紹內容為建立自己的物件 7.2 建立自己的類 首先看使用乙個簡單的類 metaclass type class person def setname self,name self.name name def getname self return self.name def greet s...
python學習筆記 7 更加抽象
usr bin env python coding utf 8 指定原始碼檔案編碼,python預設為ascii metaclass type 確定使用新式類 class person def setname self,name self 為是當前例項的引用 self.name name def g...
python之更加抽象 2014 4 6
更加抽象 12 50pm 14 50 p112 1.物件的魔力 多型 如count 在多種資料型別中都可以實現計數的功能 封裝 對全域性作用域中其他區域隱藏多餘資訊的原則 繼承2.類和型別 建立類class person def setname self,name self.name name de...