issubclass()
檢測乙個類是否是另外乙個類的子類
格式1:issubclass(被檢測類,父類)
返回值:布林值
格式1:issubclass(被檢測類,(父類1,父類2,父類3...))
返回值:布林值
注意:只要有乙個類是當前被檢測類的父類,那麼最終結果就是true
isinstance()檢測乙個物件是否是某個類的物件
格式1:isinstance(物件,類)
返回值:布林值
格式2:isinstance(物件,(類1,類2,類3...))
返回值:布林值
注意:只要乙個類是當前物件的類,那麼最終結果就是true
hasattr()檢測物件/類是否具有某個成員
格式:hasattr(物件/類,'成員名')
返回值:布林值
getattr()獲取物件/類中的成員值
格式:getattr(物件,'成員名'[,成員不存在時的預設值])
返回值:成員的值
setattr()設定或者新增物件/類中的成員
格式:setattr(物件,'成員名',值)
返回值:none
delattr()刪除物件/類中的成員
格式: delattr(物件,成員)
返回值:none
dir()獲取物件的成員名稱列表
格式:dir(物件)
返回值:列表
property()用於設定成員屬性的修飾符
格式:成員屬性 = property(獲取的方法,設定的方法,刪除的方法)
python中的描述符是用於描述物件中的屬性。主要作用就是對屬性操作提供限制,驗證,管理等相關許可權的操作。描述符主要有三種操作需要設定:
get 獲取屬性的操作
set 設定屬性的操作
delete 刪除屬性的操作
#描述符類
class description:
#成員屬性
#name = ''
#初始化方法
def __init__(self):
#為當前類/物件新增乙個成員屬性(當前類)來接收需要描述的成員屬性(要描述的類)此處還沒有接收(佔位)
self.name = none
#get獲取屬性值的方法
def __get__(self,obj,cls):# self 用於接收當前描述符類的物件 obj 接收用於管理的成員的物件 cls 用於接收管理成員的類
print('獲取方法被觸發')
self.name = str(self.name)
return self.name[:4]
#set設定屬性值的方法
def __set__(self,obj,val): #self 用於接收當前描述符類的物件 obj 接收用於管理的成員的物件 val 設定的值
print('設定方法被觸發')
#print(self,obj,val)
#在此處可以新增限制和判斷(密碼奇數時*2)
if val %2 == 1:
val *= 2
#完成了(email)物件的屬性值的設定
self.name = val
#delete刪除屬性值的方法
def __delete__(self,obj): #self當前描述符類的物件 obj 接收用於管理的成員的物件
#使用者代為刪除操作
del self.name
#宣告乙個郵箱的類
class email
#屬性#使用者名稱
account = '[email protected]'
#密碼(為密碼設定了描述符 的物件) 這一步相當於吧password的所有傳入了description的物件當中
password = description()
#郵箱類
class email:
#成員屬性
#為username新增描述符
#username = ''
#設定郵箱賬號最大的長度
maxlength = 6
#為描述符新增乙個臨時變數(在描述符中代替username進行操作)
tmpusername = none
password = ''
#成員方法
#為username的描述符進行設定(新增方法)
#獲取username的描述符方法
def getusername(self):
print('獲取操作被觸發')
#返回值之前進行值的修飾,兩邊新增星星
if self.tmpusername != none:
self.tmpusername = '★' + self.tmpusername + '★'
#設定獲取username的時候的值
return self.tmpusername
#設定username的描述符方法
def setusername(self,val):
print('設定操作被觸發')
#限制,根據email類的最大賬號長度對使用者名稱進行擷取之後在設定
#檢測val是否是字串型別
if isinstance(val,str):
val = val[0:self.maxlength]
self.tmpusername = val
#刪除username的描述符方法
def delusername(self):
print('刪除操作被觸發')
#刪除操作
del self.tmpusername
#為username設定描述符
username = property(getusername,setusername,delusername)
#郵箱類
class email:
#使用者名稱
username = ''
#密碼password = ''
#使用描述符來操作暱稱
#暱稱petname = '小乖乖'
#為描述符設定臨時變數
__petname = none
#成員方法(暫無)
#描述符設定的三個部分 獲取,設定和刪除
#處理petname獲取操作
@property
def petname(self):
print('獲取操作被觸發')
return self.__petname
#處理petname的設定操作
@petname.setter
def petname(self,val):
print('設定操作被觸發')
#設定操作
self.__petname = val
#處理petname的刪除操作
@petname.deleter
def petname(self):
print('刪除操作被觸發')
#刪除操作
del self.__petname
__dict__獲取當前類/物件成員組成的字典
__doc__獲取當前類/物件的文件,和函式一樣使用''' 定義即可
__name__類.__name__是獲取當前類名,如果直接寫__name__則是獲取模組的名稱
__bases__獲取類的繼承列表中所有父類組成的元組
類和物件(下)
1.什麼是建構函式 建構函式是一種隨著物件建立而被呼叫的公有成員函式,有且僅在定義物件時自動執行一次,它的主要用途是為物件做初始化。2.建構函式的特點 3.初始化列表 格式 以乙個冒號開始,接著是乙個逗號分割的資料成員列表,每個 成員變數 後面跟乙個放在括號中的初始值或表示式。注意點 1.每個成員在...
類和物件(下)
1.建構函式體賦值 因為初始化初始化一次而建構函式可以進行多次賦值,所以不能稱為初始化。2.初始化列表 以乙個冒號開始,接著是乙個以逗號分隔的資料成員列表,每個 成員變數 後面跟乙個放在括 號中的初始值或表示式 1 每個變數在初始化列表中只能出現一次 2 類中包含以下成員,必須放在初始化列表位置進行...
類和物件(下)
1.建構函式的初始化 include using namespace std class student private int id int name 對於上面這個類來說,呼叫建構函式的時候,物件中已經有了乙個類的初始值。但是不能將其當作類物件成員的初始化,建構函式體內的語句只能將其稱作賦初值,而...