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則用來指示是否可以...