python知識撿拾 內建方法

2021-10-01 02:47:26 字數 2220 閱讀 7282

getattr()、setattr()和__getattribute__()

當讀取物件的某個屬性時,python會自動呼叫__getattr__()方法。例如fruit.color將轉換為fruit.getattr(color)

例項:

class

fruit

(object):

def__init__

(self,color=

"red"

,price=0)

: self.__color=color

self.__price=price

def__getattribute__

(self, name)

:return

object

.__getattribute__(self,name)

def__setattr__

(self, name, value)

: self.__dict__[name]

= value

if __name__==

"__main__"

: fruit = fruit(

"blue",10

)print fruit.__dict__.get(

"_fruit__color"

) fruit.__dict__[

"_fruit__price"]=

5print fruit.__dict__.get(

"_fruit__price"

)結果為:blue

5

getitem()

如果類中把某個屬性定義為序列,可以使用__getitem__()輸出序列屬性中的各個元素

class

fruitshop

:def

__getitem__

(self, i)

:return self.fruits[i]

if __name__==

"__main__"

: shop = fruitshop(

) shop.fruits=[,

"banana"

]print shop[1]

for item in shop:

print item

結果為:banana

banana

__str__()

用於表示物件代表的含義,返回乙個字串,實現了__str__()方法後,可以直接使用print語句輸出物件,也可以通過函式str()觸發__str__()執行

class

fruit

:"""fruit類"""

#fruit類的文件字串

def__str__

(self)

:#返回fruit類的文件字串

return self.__doc__

if __name__==

"__main__"

: fruit = fruit(

)print

str(fruit)

#呼叫內建函式str()可以觸發__str__()方法。輸出結果:fruit類

print fruit #直接輸出物件fruit,返回__str__()方法的值,輸出結果是:fruit類

__call__()

在類中實現__call__()方法,可以在物件建立時直接返回__call__()的內容,使用該方法可以模擬靜態方法

class

fruit

:class

growth

:def

__call__

(self)

:print

"grow..."

grow = growth(

)#呼叫growth內部類,將類growth作為函式返回,即為外部類fruit定義方法grow(),grow()將執行__call__()內的**

if __name__==

'__main__'

: fruit = fruit(

) fruit.grow(

) fruit.grow(

)

python知識撿拾 模組內建函式

如 def sum x 1,y 2 return x y print sum,1,3 2.filter 對某個序列做過濾處理 filter func or none,sequence 引數func是自定義的過濾函式,在函式func item 中定義過濾的規則,如果func為 none 則過濾項ite...

python知識撿拾 閉包

例項1 defsay word def name name print word,name return name hi say 你好 hi 小明 你好 小明 bye say 再見 hi 小明 再見 小明例項2 deffunc res defput x defget return res retur...

python知識撿拾 URL及urllib篇

python中用urlparse來對url字元進行解析 urlparse方法由兩個可選的引數 default scheme和allow fragments default scheme主要用來為不包含協議部分的url指定預設協議,此引數預設值為空字串 allow fragments則用來指示是否可以...