python 內建屬性 setattr

2021-10-11 20:20:09 字數 4610 閱讀 2262

直奔主題

使用中文注釋需要使用

#-*-coding:utf-8-*-

property

property在python中有2中使用property方法:

1.@property @屬性名稱.setter @屬性名稱.deleter

2.使用property(fget, fset, fdel, doc)指定

1.使用裝飾器@property

要求:(1)所用的類為新式類,在python3版本以上預設為新式類,或者是是直接或間接繼承object的類

(2)定義的函式名稱必須要是名稱名(如屬性名是name,那函式名稱就為name,不能為其他的。詳情看例子)

classdemo(object):def __init__(self):print("這是建構函式")

self._name=none

@propertydefname(self):return self._name #這是屬性get的方法

@name.setterdef name(self, value):#這是屬性set的方法

self._name =value

@name.deleterdefname(self):print("this is the method of delete")

self._name=noneif __name__ == "__main__":

testdemo=demo()print(testdemo.name)

testdemo.name= "name"

print(testdemo.name)del testdemo.name

以下是結果:

#*****=以下是結果*****===

這是建構函式

none

name

thisis the method of delete

2.使用property()方法 property(fget,fset,fdel,doc)

要求:(1)所用的類為新式類,在python3版本以上預設為新式類,或者是是直接或間接繼承object的類

classdemo2(object):def __init__(self):print("這是建構函式")

self._value=nonedef getvalue(self):#這是屬性value的get方法

print("getting the value of property")returnself._valuedef setvalue(self, value):#這是屬性value的set方法

print("setting the value of property")

self._value=valuedef delvalue(self):#這是屬性value刪除方法

print("this is the method of delete")

self._value=none

value= property(fget=getvalue, fset=setvalue, fdel=delvalue, doc="this is a message about the property of value")if __name__ == "__main__":

testdemo=demo2()print(testdemo.value)

testdemo.value= "name"

print("print the value of property:",testdemo.value)del testdemo.value

以下是結果:

#*****=以下是結果*****===

這是建構函式

getting the value of property

none

setting the value of property

getting the value of property

('print the value of property:', 'name')

thisis the method of delete

使用屬性property2種方法存放多個值的例子

1.使用裝飾器@property進行設定 屬性含有多個值

classdemo4(object):def __init__(self):print("這是建構函式")

self._value1=none

self._value2=none

@propertydefvalues(self):return self._value1, self._value2 #這是屬性get的方法

@values.setterdef values(self, values):#這是屬性set的方法

self._value1, self._value2 =values

@values.deleterdefvalues(self):print("this is the method of delete")

self._value1=none

self._value2=noneif __name__ == "__main__":

testdemo=demo4()print(testdemo.values)

testdemo.values= "name","helloworld"

print("print the value of property:", testdemo.values)del testdemo.values

以下是結果:

#*****=以下是結果*****===

這是建構函式

(none, none)

('print the value of property:', ('name', 'helloworld'))

thisis the method of delete

2.property(fget, fset, fdel, doc)方法設定  屬性含有多個值

classdemo3(object):def __init__(self):print("這是建構函式")

self._value=none

self._value2=nonedef getovalue(self): #這是屬性value的get方法

print("getting the value of property")returnself._value, self._value2def setovalue(self, values): #這是屬性value的set方法

print("setting the value of property")

self._value, self._value2=valuesdef delovalue(self): #這是屬性value刪除方法

print("this is the method of delete")

self._value=none

values= property(fget=getovalue, fset=setovalue, fdel=delovalue, doc="this is a message about the property of values")if __name__ == "__main__":

testdemo=demo3()print(testdemo.values)

testdemo.values= "name","helloworld"

print("print the value of property:", testdemo.values)del testdemo.values

以下是結果:

這是建構函式

getting the value of property

(none, none)

setting the value of property

getting the value of property

('print the value of property:', ('name', 'helloworld'))

thisis the method of delete

getter和setter

getter和setter 是在物件上動態的增加屬性

if __name__ == "__main__":

testdemo=demo2()print([n for n in dir(testdemo) if n[0] is not "_"])

setattr(testdemo,"newmethod", "hellworld")print([n for n in dir(testdemo) if n[0] is not "_"])

value= getattr(testdemo, "newmethod")print(value)#使用getattr獲取乙個不存在的屬性,如果屬性不存在,則返回乙個預設的值

value = getattr(testdemo, "yoyo", "the value is not exist!")print(value)

以下是結果:

#*****=以下是結果*****===

這是建構函式

['delvalue', 'getvalue', 'setvalue', 'value']

['delvalue', 'getvalue', 'newmethod', 'setvalue', 'value']

hellworld

the valueis not exist!

Python 內建類屬性

dict 類的屬性 包含乙個字典,由類的資料屬性組成 doc 類的文件字串 name 類名 module 類定義所在的模組 類的全名是 main classname 如果類位於乙個匯入模組mymod中,那麼classname.module 等於 mymod bases 類的所有父類構成元素 包含了以...

python內建類屬性

name 內建屬性,如果直接執行該模組,name main 如果import乙個模組,該模組的 name 模組名 if name main 判斷是否直接執行的該模組 dict 類的屬性 包含乙個字典,由類的資料屬性組成 doc 類的文件字串 module 類定義所在的模組 類的全名是 main cl...

python常用內建屬性大全

在python中建立乙個類,它不僅有我們自定義的屬性和方法,還有與生俱來的一些屬性和方法,我們叫它內建屬性。下面是類常用內建屬性列表。負責乙個類例項化中的初始化操作 new 在建立例項化時發生作用,在init之前執行,主要作用是建立例項物件,典型的應用是在單利模式中.class singleton ...