面向物件【day07】:知識點回顧(十二)
阿新 • • 發佈:2018-11-02
本節內容
1、self關鍵字
2、封裝
3、繼承
4、靜態方法
一、self關鍵字
作用:呼叫當前方法的物件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
class
Foo:
#靜態欄位或者公有屬性
country
=
"中國"
def
__init__(
self
,name,count):
self
.name
=
name
self
.count =
count
def
bar(
self
):
pass
obj1
=
Foo(
"江蘇"
,
100000
)
obj1.bar
|
注意:country = "中國" 屬於公有欄位,它的作用是:每個物件中儲存相同的東西時,可以使用靜態欄位
二、封裝
- 類中封裝了 :欄位、方法
- 物件中封裝了:普通欄位的值
- 不僅可以封裝欄位,還可以封裝物件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
class
F1:
def
__init__(
self
,n):
self
.N
=
n
print
(
"F1"
)
class
F2:
def
__init__(
self
,arg1):
self
.a
=
arg1
print
(
"F2"
)
class
F3:
def
__init__(
self
,arg2):
self
.b
=
arg2
print
(
"F3"
)
o1
=
F1(
"alex"
)
o2
=
F2(o1)
o3
=
F3(o2)
######輸出alex####
# o3 =F3(o2)
o3
=
=
=
=
> o2
# o2 = F2(o1)
o3.b.a
# o1 = F1("alex")
o1.b.a.N
|
三、繼承
說明:子類繼承父類,物件呼叫方法時,先從自己的類中去找,找不到,就會去找父類中的方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
class
F1:
def
__init__(
self
):
print
(
'F1'
)
def
a1(
self
):
print
(
"F1a1"
)
def
a2(
self
):
print
(
"F1a2"
)
class
F2(F1):
def
__init__(
self
):
print
(
"F1"
)
def
a1(
self
):
print
(
"F2a1"
)
def
a2(
self
):
self
.a2()
print
(
"F2a2"
)
class
F3(F2):
def
__init__(
self
):
print
(
"F3"
)
def
a2(
self
):
print
(
"F3a2"
)
obj
=
F3()
obj.a1()
#輸出
F3a2
F2a1
|
上面程式碼訪問的順序如下:
- 先去到F3中找a1方法,沒有找到
- 到F2父類去找,找到了a1方法,去執行a1方法
- 執行過程中需要呼叫F3中的a2方法
四、靜態方法
4.1 類的組成
- 欄位:1.普通欄位(儲存在物件中),2靜態欄位(儲存在類中)
- 方法:普通方法(儲存在類中,用物件去呼叫)
1 2 3 4 5 6 7 |
class
F1:
age
=
18
#靜態欄位
def
__init__(
self
,name):
self
.name
=
name
#普通欄位
def
a1(
self
):
#普通方法
print
(
'F1a1'
)
|
4.2 靜態方法
特點:
- 儲存在類中
- 呼叫者無需建立物件
- 可以有任意個引數
1 2 3 4 5 6 7 8 |
class
F1:
@staticmethod
#宣告是靜態方法
def
a1(n1,n2):
#無需傳入物件,但是可以宣告多個值
print
(
'xiaogao'
)
F1.a1(
1
,
2
)
#類名.方法名 方式呼叫
|
作用:當物件不需要傳入引數時,去建立物件有些浪費,佔著資源,所以還不如直接用類名直接去呼叫,這個類似於函式。