#更加抽象 12:50pm- 14:50 p112-
1.物件的魔力
多型 如count 在多種資料型別中都可以實現計數的功能
封裝 對全域性作用域中其他區域隱藏多餘資訊的原則
繼承2.類和型別
建立類class person:
def setname(self,name)
self.name=name
def getname(self):
return self.name
def greet(self):
print "hello i am %s."%self.name
特性 函式和方法
將方法加上私有特性在方法名前加雙下劃線
__add()
類的命名空間
def foo(x):return x*x
等價於 foo=lambda x:x*x
類的定義實際就是**快
指定超類
子類可以擴充套件超類的定義
將其他類名寫在class 語句後的圓括號內可以指定超類:
class filter:
def init(self):
self.blocked=
def filter(self,sequence):
return [x for x in sequence if c not in slef.locked]
class spamfilter(filter):#spamfiter是filter的子類
def init(self):#重寫filter超類中的init方法
self.blocked=['spam']
調查繼承
如果想檢視乙個類是否是另乙個的子類 可以使用內建的issubclass函式
>>>issubclass(spamfilter,filter)
true
>>>issubclass(filter,spamfilter)
false
如果想要值得已知類的基類 可以直接使用它的特殊特性__bases__;
>>>spamfilter.__bases__
()>>>filter.__bases__
()同樣 還可以使用isinstance方法檢查乙個物件是否是乙個類的例項
>>>s=spamfilter()
>>>isinstances(s,spamfilter)
true
>>>isinstances(s,filter)
true
>>>isinstances(s,str)
false
多個超類
class calculator:
def calculate(self,expression):
self.value=eval(expression)
class talker:
def talk(self):
print 'hi,my value is',self.value
class talkingcalculator(calculator,talker):
pass
talkingcalculator從自己的超類繼承所有的行為 從calculator類繼承calculate方法 從talker類繼承talk方法
這樣就成了會說話的計算器 talking calculator
這種行為稱為多重繼承 注意順序 先繼承的類的方法會重寫後繼承的類中的方法
介面和內省(待補充)
python學習(七) 更加抽象
python是物件導向的語言。7.1 物件的魔力 7.1.1 多型 不管是字串還是列表,count 函式都可以正常工作。ab b c count c 1 abc count c 1下面的加號 運算子對於整數和列表都可以起作用,而且行為不同 1 2 3 fsafda fsdfs fsafdafsdfs...
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...