python之更加抽象 2014 4 6

2022-09-16 10:54:13 字數 1730 閱讀 2770

#更加抽象 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...