一、issubclass(class,classinfo):如果說第乙個引數是第二個引數的子類則返回true
注意:乙個類會被認為是自身的子類;classinfo 可以是類物件組成的元祖,只要class是其中
任何乙個候選類的子類,則返回true
class二、isinstance(object,classinfo):檢查乙個例項物件是否屬於乙個類,classinfo可以為元祖a:pass
class
b(a)
:pass
(issubclass
(b,a))#結果
true
(issubclass
(b,b))#結果
true
(issubclass
(b,object))#
結果true
class
c:pass
(issubclass
(b,c))#結果
false
(issubclass
(b,(a,c)))#結果
true
注意:如果第乙個引數不是物件,則永遠返回false
如果第二個引數不是類或者由類物件組成的元祖,會丟擲乙個typeerror異常
classa:pass
class
b(a)
:pass
class
c:pass
b1 = b()
(isinstance
(b1,b))
#結果:
true
(isinstance
(b1,a))
#結果:
true
(isinstance
(b1,c))
#結果:
false
三、hasattr(object,name):測試object物件裡面是否有指定的name屬性
classc:def
__init__
(self,x=0)
:self.x = x
c1 = c()
(hasattr
(c1,'x'))#
結果:true 其中x
必須要用引號否則報錯
四、getattract(object,name[,default]):返回物件指定的屬性值,如果
指定的屬性值不存在,如果此時設定了default引數,則會將default引數列印出來
class五、setattr(object,name,value):設定物件指定屬性值,如果指定的屬性不存在c:def
__init__
(self,x=0)
:self.x = x
c1 = c()
(hasattr
(c1,'x'))#
結果:true 其中x
必須要用引號否則報錯
(getattr
(c1,'x'))#
結果0,print
(getattr
(c1,'xd','
您所訪問的屬性不存在'))
#結果:您所訪問的屬性不存在
那麼會新建立乙個屬性並賦值
class六、delattr(object,name):刪除物件中的屬性c:def
__init__
(self,x=0)
:self.x = x
c1 = c()
(hasattr
(c1,'x'))#
結果:true 其中x
必須要用引號否則報錯
(getattr
(c1,'x'))#
結果0,print
(getattr
(c1,'xd','
您所訪問的屬性不存在'))
#結果:您所訪問的屬性不存在
setattr
(c1,'xd','hjah'
(getattr
(c1,'xd','
您所訪問的屬性不存在'))
#結果:
hjah
class七、property(fget = none,fset = none,fdel = none,doc = none):通過屬性來設定屬性c:def
__init__
(self,x=0)
:self.x = x
c1 = c()
(hasattr
(c1,'x'))#
結果:true 其中x
必須要用引號否則報錯
(getattr
(c1,'x'))#
結果0,print
(delattr
(c1,'x'))#
結果none
(delattr
(c1,'x'))#
存在就會刪除,不存在則報錯
print(delattr(c1,'x')) attributeerror: x
#為了避免
delattr
報錯,可以先通過
hasattr
來檢測屬性是否存在,存在則進行刪除
classc: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()
(c1.getsize())
#結果:
10print
(c1.x,'----------')#
結果:10
c1.setsize(12)
#給size
賦值為12
(c1.getsize())
#結果:
12print
(c1.x,'----------')#
結果:12
c1.x = 22#
給size
賦值為22
(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...