類和物件 相關的BIF

2021-08-19 16:03:10 字數 3824 閱讀 4008

一、issubclass(class,classinfo):如果說第乙個引數是第二個引數的子類則返回true

注意:乙個類會被認為是自身的子類;classinfo 可以是類物件組成的元祖,只要class是其中

任何乙個候選類的子類,則返回true

class 

a:pass

class

b(a)

:pass

print

(issubclass

(b,a))#結果

true

print

(issubclass

(b,b))#結果

true

print

(issubclass

(b,object))#

結果true

class

c:pass

print

(issubclass

(b,c))#結果

false

print

(issubclass

(b,(a,c)))#結果

true

二、isinstance(object,classinfo):檢查乙個例項物件是否屬於乙個類,classinfo可以為元祖

注意:如果第乙個引數不是物件,則永遠返回false

如果第二個引數不是類或者由類物件組成的元祖,會丟擲乙個typeerror異常

class 

a:pass

class

b(a)

:pass

class

c:pass

b1 = b()

print

(isinstance

(b1,b))

#結果:

true

print

(isinstance

(b1,a))

#結果:

true

print

(isinstance

(b1,c))

#結果:

false

三、hasattr(object,name):測試object物件裡面是否有指定的name屬性

class 

c:def

__init__

(self,x=0)

:self.x = x

c1 = c()

print

(hasattr

(c1,'x'))#

結果:true 其中x

必須要用引號否則報錯

四、getattract(object,name[,default]):返回物件指定的屬性值,如果

指定的屬性值不存在,如果此時設定了default引數,則會將default引數列印出來

class 

c:def

__init__

(self,x=0)

:self.x = x

c1 = c()

print

(hasattr

(c1,'x'))#

結果:true 其中x

必須要用引號否則報錯

print

(getattr

(c1,'x'))#

結果0,print

(getattr

(c1,'xd','

您所訪問的屬性不存在'))

#結果:您所訪問的屬性不存在

五、setattr(object,name,value):設定物件指定屬性值,如果指定的屬性不存在

那麼會新建立乙個屬性並賦值

class 

c:def

__init__

(self,x=0)

:self.x = x

c1 = c()

print

(hasattr

(c1,'x'))#

結果:true 其中x

必須要用引號否則報錯

print

(getattr

(c1,'x'))#

結果0,print

(getattr

(c1,'xd','

您所訪問的屬性不存在'))

#結果:您所訪問的屬性不存在

setattr

(c1,'xd','hjah'

)print

(getattr

(c1,'xd','

您所訪問的屬性不存在'))

#結果:

hjah

六、delattr(object,name):刪除物件中的屬性

class 

c:def

__init__

(self,x=0)

:self.x = x

c1 = c()

print

(hasattr

(c1,'x'))#

結果:true 其中x

必須要用引號否則報錯

print

(getattr

(c1,'x'))#

結果0,print

(delattr

(c1,'x'))#

結果none

print

(delattr

(c1,'x'))#

存在就會刪除,不存在則報錯

print(delattr(c1,'x')) attributeerror: x

#為了避免

delattr

報錯,可以先通過

hasattr

來檢測屬性是否存在,存在則進行刪除

七、property(fget = none,fset = none,fdel = none,doc = none):通過屬性來設定屬性

class 

c:def

__init__

(self,size = 10)

:self.size = size

def

getsize

(self):

return

self.size

def

setsize

(self,value)

:self.size = value

def

delsize

(self):

del

self.size

x =

property

(getsize,setsize,delsize)

c1 = c()

print

(c1.getsize())

#結果:

10print

(c1.x,'----------')#

結果:10

c1.setsize(12)

#給size

賦值為12

print

(c1.getsize())

#結果:

12print

(c1.x,'----------')#

結果:12

c1.x = 22#

給size

賦值為22

print

(c1.getsize())

#結果:

22print

(c1.x,'----------')#

結果:22

del c1.x#

刪除print

(c1.x,'----------')#

結果報錯:

attributeerror: 'c' object has no attribute 'size'

和類相關的BIF

issubclass class,classinfo 判斷第乙個引數是第二個引數的子類,這個判斷是比較寬鬆的判斷。因為第二個引數也可以是元組,並且只要引數1是元組內任意乙個元素的子元素,就會返回true。class a pass class b pass class c a pass issubcl...

40 類和物件4(BIF)

一 判斷類 子類 物件關係的bif 1.issubclass class,classinfo 返回布林型 classinfo可以是類物件組成的元組,只要class與其中任何乙個候選類的子類一致,就返回true class a pass class b a pass issubclass b,a tr...

類和物件的一些BIF

issubclass 用於判斷自己的子類 issubclass a,b a是不是b的子類,是返回true 否則 false 自身也屬於自己的子類 isinstance object,classinfo 用於檢查乙個例項物件是否屬於乙個類 classinfo 可以傳入乙個元組 class a obje...