40 類和物件4(BIF)

2021-08-22 05:00:11 字數 1940 閱讀 2949

一、判斷類、子類、物件關係的bif

1. issubclass(class, classinfo)   返回布林型

classinfo可以是類物件組成的元組,只要class與其中任何乙個候選類的子類一致,就返回true

>>> class 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

>>> 

2.isinstance(object, classinfo)

classinfo可以是類物件組成的元組,只要object是其中任何乙個候選類的物件,就返回true

>>> issubclass(b, c)

false

>>> b = b()

>>> isinstance(b , b)

true

>>> isinstance(b , a)

true

>>> 

若b是a的子類,則b的例項化物件b也是a的例項化物件

二、屬性相關的bif

3.hasattr(object,  name)  檢視例項化物件是否具有某屬性,name必須為字串

>>> class c:

def __init__(self, x=0):

self.x = x

>>> c = c()

>>> hasattr(c, 'x')

true

>>> 

4.getattr(object, name[, default])

>>> getattr(c, 'x')

0>>> getattr(c,'y', '您所訪問的屬性不存在' )

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

>>> 

5.setattr(object, name, value)

>>> setattr(c, 'y', '1234')

>>> getattr(c, 'y')

'1234'

>>> 

6.delattr(object, name)

>>> delattr(c, 'u')

>>> delattr(c, 'u')

traceback (most recent call last):

file "", line 1, in

delattr(c, 'u')

attributeerror: u

7. property(fget = none, fset = none, fdel = 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)

>>> c = c()

>>> c.x

10>>> c.x = 18

>>> c.x

18>>> del c.x

>>> 

需要在類中定義讀取屬性的方法fget, 設定屬性的方法fset,刪除屬性的方法fdel,將屬性歸於property並傳給x,將x提供給使用者呼叫,當類中方法名需要更改時,使用者呼叫屬性無需改變,c.x即可呼叫屬性。  

類和物件 相關的BIF

一 issubclass class,classinfo 如果說第乙個引數是第二個引數的子類則返回true 注意 乙個類會被認為是自身的子類 classinfo 可以是類物件組成的元祖,只要class是其中 任何乙個候選類的子類,則返回true class a pass class b a pass...

類和物件的一些BIF

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

和類相關的BIF

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