class
father
:def
__init__
(self,name)
: self.name=name
print
("name: %s"
% self.name)
defgetname
(self)
:return
'father '
+ self.name
class
son(father)
:def
getname
(self)
:return
'son '
+ self.name
if __name__ ==
'__main__'
: son = son(
'runoob'
)print
(son.getname())
執行結果:
name: runoob
son runoob
name屬性在son繼承father語句時,由father物件初始化語句產生的。
class
father
:def
__init__
(self,name)
: self.name=name
print
("name: %s"
% self.name)
defgetname
(self)
:return
'father '
+ self.name
class
son(father)
:def
__init__
(self,name)
:# 重寫父類方法
print
('hi'
) self.name=name
defgetname
(self)
:return
'son '
+ self.name
if __name__ ==
'__main__'
: son = son(
'runoob'
)print
(son.getname())
執行結果:
hison runoob
如果重寫了__init__ 時,例項化子類,就不會呼叫父類已經定義的init
class
father
:def
__init__
(self,):
self.name=
"father"
print
("name: %s"
% self.name)
defgetname
(self)
:return
'father '
+ self.name
class
son(father)
:def
__init__
(self,name)
:super
(son, self)
.__init__(
)print
('hi'
) self.name = name
defgetname
(self)
:return
'son '
+ self.name
if __name__ ==
'__main__'
: son = son(
'runoob'
)print
(son.getname())
執行結果:
name: father
hison runoob
上圖用了supeer(子類名,self).__init__方法呼叫父類情況總結:
情況一:子類需要自動呼叫父類的方法:子類不重寫__init__()方法,例項化子類後,會自動呼叫父類的__init__()的方法。
情況二:子類不需要自動呼叫父類的方法:子類重寫__init__()方法,例項化子類後,將不會自動呼叫父類的__init__()的方法。
super
(子類,self)
.__init__(引數1,引數2,...
.)class
son(father)
:def
__init__
(self, name)
:super
(son, self)
.__init__(name)
裝飾器import time
def(func)
:def
new_func
(x):
t = time.time(
) func(x)
print
('cost time='
,(time.time(
)- t)
)return new_func
defhello
(a):
print
(len
([x for x in
range
(a)if x %
2>0]
))hello(
1000000
)# 等價於
(1000000
)def
do_something
(func, x)
:print
(func, x)
defdec
(x):
definner_dec
(f):
do_something(f, x)
return f
return inner_dec
@dec(
123)
deff()
:print
("hello world"
)執行結果:
>
123hello world
process finished with exit code 0
'@dec(123)帶引數,那麼同樣會把123和f函式給到dec函式裡面。 Python class類轉字典
有時候會需要從包裝的類裡面取出需要的資料,但有不能直接取出來 可以通過如下 把class轉換成字典 將class轉dict,以 開頭的也要 defprops with obj pr for name in dir obj value getattr obj,name ifnot name.start...
函式裝飾器 類裝飾器
一 函式裝飾函式 defwrapfun func definner a,b print function name func.name r func a,b return r return inner wrapfun defmyadd a,b return a b print myadd 2,3 二...
python裝飾器 函式裝飾器,類裝飾器
只要實現此 模式,這個obj就叫乙個裝飾器 參考 函式裝飾器 例子 def decorator func def inner args,kwargs print before.res func args,kwargs print after.return res return inner decor...