直奔主題
使用中文注釋需要使用
#-*-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 ...