在定義類(lèi)(class)的時(shí)候發(fā)現(xiàn)屬性這個(gè)地方有很多坑,類(lèi)屬性、實(shí)例屬性、局部變量傻傻分不清。
在在本文中介紹以下內(nèi)容(全部跟定義類(lèi)有關(guān))
- 類(lèi)屬性
- 實(shí)例屬性
一. 類(lèi)屬性:定義類(lèi)的模塊添加的屬性
1. 調(diào)用:
在內(nèi)部用類(lèi)名.類(lèi)屬性名調(diào)用,
外部既可以用類(lèi)名.類(lèi)屬性名又可以用實(shí)例化對(duì)象.類(lèi)屬性名來(lái)調(diào)用
demo1
class
Car
(
)
:
type
=
"new"
my_car
=
Car
(
)
print
(
my_car
.
type
)
### 實(shí)例對(duì)象.類(lèi)屬性名調(diào)用
print
(
Car
.
type
)
### 類(lèi)名.類(lèi)屬性名調(diào)用
輸出結(jié)果:
new
new
2. 修改:通過(guò)類(lèi)名.類(lèi)屬性修改,在全局任何地方都可以修改
demo2
class
Car
(
)
:
type
=
"new"
Car
.
type
=
"newnew"
my_car
=
Car
(
)
print
(
Car
.
type
)
print
(
my_car
.
type
)
輸出結(jié)果:
newnew
newnew
###通過(guò)輸出結(jié)果可以看出修改成功了
二、實(shí)例屬性:類(lèi)內(nèi)所有方法可調(diào)用(標(biāo)志:self.屬性名)
- 在__init__(self,…)中初始化的屬性,self.屬性名
-
在類(lèi)中的其他方法中定義的self.屬性名
因?yàn)開(kāi)_init__函數(shù)比較特殊,所以單拿出來(lái)講,關(guān)于__init__方法:
這兩種情況會(huì)在demo中一一舉例
要點(diǎn):以self為前綴的變量都可以供類(lèi)中的所有方法使用
外部調(diào)用時(shí)用實(shí)例對(duì)象.屬性名
demo
class
Car
(
)
:
type
=
"new"
###類(lèi)屬性
def
__init__
(
self
,
make
,
year
)
:
self
.
make
=
make
self
.
year
=
year
### make,year在實(shí)例化對(duì)象的時(shí)候必須傳入相應(yīng)參數(shù) 必需實(shí)例屬性
self
.
length
=
2000
### 由于__init__方法定義的時(shí)候沒(méi)有wo,所以在實(shí)例化對(duì)象的時(shí)候無(wú)需傳入 非必需屬性
def
get_name
(
self
)
:
long_name
=
self
.
year
+
' '
+
self
.
make
+
" "
print
(
long_name
,
self
.
length
)
my_car
=
Car
(
'aodi'
,
'2010'
)
my_car
.
get_name
(
)
輸出結(jié)果:
2010
aodi
2000
從上面的注釋中可以看出有兩種實(shí)例屬性,一種是必需實(shí)例屬性(如demo中的make,year,它們是在__init__方法中定義的時(shí)候定義的,在實(shí)例化對(duì)象的時(shí)候必須傳入),一些是非必需實(shí)例屬性如(length,當(dāng)然后面的方法也可以調(diào)用它,但在實(shí)例化對(duì)象的時(shí)候無(wú)需傳入)。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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