python 類的屬性

2022-03-09 13:39:06 字數 3139 閱讀 7499

類的屬性

屬性的基本使用

屬性的定義和呼叫需要注意以下幾點:

屬性存在的意義:訪問屬性時,可以製造出和訪問字段完全相同的假象,由於屬性是由方法變種而來,如果python中沒有屬性,完全可以由方法來替代.

屬性的兩種定義方式

python3中全都是新式類,有三種@property裝飾方式:

其實就像上面的例子.

還有一種方式是靜態字段方式.建立值為property的物件的靜態欄位.

來看個例子:

class

pager:

def__init__

(self,name):

self.name=name

deff1(self):

return 123

deff2(self,value):

print

(value)

deff3(self):

print('

del....')

foo=property(fget=f1,fset=f2,fdel=f3)

obj=pager(110)

ret=obj.foo #

呼叫fget

print

(ret)

obj.foo=778 #

呼叫fset

del obj.foo #

呼叫fdel

out:

123

778del....

其中fget,fset,fdel為預設引數.

class

pager:

def__init__

(self,all_count):

self.all_count =all_count

deff1(self):

return 123

deff2(self,value):

self.value =value

print

(self.value)

deff3(self):

pass

foo = property(fget=f1,fset=f2,fdel=f3)

p = pager(101)

#獲取屬性的值,缺省會呼叫fget

result =p.foo

print

(result)

#修改屬性的值,缺省會呼叫fset

p.foo = "

alex"#

刪除屬性的值,缺省會呼叫fdel

del p.foo

out:

123alex

1.建立類的屬性

使用@property裝飾器來建立

class

pager:

def__init__

(self,all_count):

self.all_count =all_count

@property

defall_pager(self):

a1,a2 = divmod(self.all_count,10)

if a2 ==0:

return

a1

else

:

return a1+1

2.獲取類的屬性

class

pager:

def__init__

(self,all_count):

self.all_count =all_count

@property

defall_pager(self):

a1,a2 = divmod(self.all_count,10)

if a2 ==0:

return

a1

else

:

return a1+1p = pager(101)

ret = p.all_pager

print(ret)

out :

3、設定類的屬性

使用裝飾器 @all_pager.setter  然後使用 p.all_pager = 111 修改屬性的值

class

pager:

def__init__

(self,all_count):

self.all_count =all_count

@property

defall_pager(self):

a1,a2 = divmod(self.all_count,10)

if a2 ==0:

return

a1

else

:

return a1+1@all_pager.setter

defall_pager(self,value):

print

(value)

p = pager(101)

p.all_pager

= 111

out :

4、刪除屬性

使用@all_pager.deleter 和 del p.all_pager

class

pager:

def__init__

(self,all_count):

self.all_count =all_count

@property

defall_pager(self):

a1,a2 = divmod(self.all_count,10)

if a2 ==0:

return

a1

else

:

return a1+1@all_pager.deleter

defall_pager(self):

print('

del all_pager')

p = pager(101)

del p.all_pager

out:

del all_pager

python類的屬性

一 介紹 1 在python中,如果屬性是以雙下劃線開始的,則該屬性是私有屬性。2 如果在類內部使用私有屬性,則應該在私有屬性前加上 self.二 示例 class book author name page 0 price 0 press a book a.author traceback mos...

python 類的屬性

class person 類屬性,通過類名訪問,屬於整個類,而不是某個物件 nation 中國 限制可以使用的屬性,提高訪問的效率 也可以提高訪問速度,減少記憶體使用 slots name age nation def init self,name self.name name self.natio...

檢視python類的屬性

檢視乙個類的靜態屬性,也就是說有個類 type 我要動態獲取 type.fte 這個屬性的值。最簡單的方案有兩個 getattr type,fte type.dict fte 那麼,如果要獲取類屬性的列表,該怎麼做呢?首先上場的是 dir 它能返回當前範圍的所有屬性名稱列表 dir builtins...