文章目錄
- 1. 字典增刪
- 2. 模塊、類、對象
- 2.1 一個類的例子
- 3.繼承和組合
- 3.1 什么是繼承
- 3.1.1 隱式繼承
- 3.1.2 顯式覆蓋
- 3.1.3 在運行前或運行后替換
- 3.1.4 三種方式組合使用
- 3.2 組合
- 3.3 繼承和組合的應用場合
1. 字典增刪
stuff
=
{
"name"
:
"jack"
,
"age"
:
"18"
,
"height"
:
"180"
}
stuff
[
"city"
]
=
"beijing"
print
(
stuff
)
del
stuff
[
"city"
]
print
(
stuff
)
2. 模塊、類、對象
- 模塊通過import調用,調用之后就可以使用模塊里面的函數、變量等。就比如,import sklearn。
- 類、實例化、對象
class
mystuff
(
)
:
# 對象初始化
def
__init__
(
self
)
:
self
.
tangerine
=
"hhhhhhhhhh"
def
apple
(
self
)
:
print
(
"i am superman"
)
thing
=
mystuff
(
)
# 實例化,得到thing這個對象。
thing
.
apple
(
)
print
(
thing
.
tangerine
)
將類實例化就會得到對象,可以對對象調用函數等操作。
2.1 一個類的例子
class
Song
(
object
)
:
def
__init__
(
self
,
lyrics
)
:
self
.
lyrics
=
lyrics
def
sing_me_a_song
(
self
)
:
for
line
in
self
.
lyrics
:
print
(
line
)
happy_baby
=
Song
(
[
"happy birthday to you"
,
"happy new year"
]
)
happy_baby
.
sing_me_a_song
(
)
3.繼承和組合
大部分使用繼承的場合都可以使用組合取代或簡化,而多重繼承則需要不惜一切地避免。
3.1 什么是繼承
繼承就是指一個類地大部分或全部功能是從一個父類中獲得的,父類和字類有三種交互方式:
- 子類上的動作完全等同于父類上的動作
- 子類上的動作完全覆蓋父類上的動作
- 子類上的動作部分替換了父類上的動作
3.1.1 隱式繼承
# 隱式繼承
class
parent
(
object
)
:
def
implicit
(
self
)
:
print
(
"parent implicit()"
)
class
child
(
parent
)
:
pass
dad
=
parent
(
)
.
implicit
(
)
child
=
child
(
)
.
implicit
(
)
3.1.2 顯式覆蓋
class
parent
(
object
)
:
def
override
(
self
)
:
print
(
"parent override()"
)
class
child
(
parent
)
:
def
override
(
self
)
:
print
(
"child override()"
)
dad
=
parent
(
)
.
override
(
)
child
=
child
(
)
.
override
(
)
3.1.3 在運行前或運行后替換
class
parent
(
object
)
:
def
altered
(
self
)
:
print
(
"parent altered()"
)
class
child
(
parent
)
:
def
altered
(
self
)
:
print
(
"child, before parent altered()"
)
super
(
child
,
self
)
.
altered
(
)
print
(
"child,after parent altered()"
)
parent
(
)
.
altered
(
)
child
(
)
.
altered
(
)
super(child,self)還保留著繼承關系,因此通過繼承父類之后,通過.altered()調用了父類的altered函數。
3.1.4 三種方式組合使用
class
parent
(
)
:
def
override
(
self
)
:
print
(
"parent override()"
)
def
implicit
(
self
)
:
print
(
"parent implicit()"
)
def
altered
(
self
)
:
print
(
"parent altered()"
)
class
child
(
parent
)
:
def
override
(
self
)
:
print
(
"child override()"
)
def
altered
(
self
)
:
print
(
"child, before parent altered()"
)
super
(
child
,
self
)
.
altered
(
)
print
(
"child,after parent altered()"
)
dad
=
parent
(
)
son
=
child
(
)
dad
.
implicit
(
)
son
.
implicit
(
)
dad
.
override
(
)
son
.
override
(
)
dad
.
altered
(
)
son
.
altered
(
)
3.2 組合
class
other
(
object
)
:
def
override
(
self
)
:
print
(
"other override()"
)
def
implicit
(
self
)
:
print
(
"other implicit()"
)
def
altered
(
self
)
:
print
(
"other altered()"
)
class
child
(
object
)
:
def
__init__
(
self
)
:
self
.
other
=
other
(
)
def
implicit
(
self
)
:
self
.
other
.
implicit
(
)
def
override
(
self
)
:
print
(
"child override()"
)
def
altered
(
self
)
:
print
(
"child, before parent altered()"
)
self
.
other
.
altered
(
)
print
(
"child,after parent altered()"
)
son
=
child
(
)
son
.
implicit
(
)
son
.
override
(
)
son
.
altered
(
)
這里不是使用了繼承的方法,而是,child里面有一個other()用來實現繼承的功能。
3.3 繼承和組合的應用場合
繼承和組合說到底都是為了解決關于代碼重復的問題。
每個人的代碼風格不同,這里僅代表一點建議:
- 不惜一切避免多重繼承。
- 如果一些代碼會在不同位置和場合用到,建議用組合。
- 只有在代碼的可復用部分之間有明確清楚的聯系的時候,可以通過一個單獨的共性聯系起來的時候,才用繼承。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
