python 類和物件下

2022-03-17 01:57:48 字數 3973 閱讀 9480

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 對於上面這個類來說,呼叫建構函式的時候,物件中已經有了乙個類的初始值。但是不能將其當作類物件成員的初始化,建構函式體內的語句只能將其稱作賦初值,而...