文章目錄
-
- 一、issubclass(class,classinfo)
- 二、isinstance(object,classinfo)
- 三、hasattr(object,name)
- 四、getattr(object,name[,default])
- 五、setattr(object,name,value)
- 六、delattr(object,name)
- 七、property(fget=None,fset=None,fdel=None,doc=None)
一、issubclass(class,classinfo)
如果第一個參數(class)是第二個參數(classinfo)的一個子類,則傳回TRUE,否則傳回FALSE
(1)一個類被認為是其自身的子類
(2)classinfo可以是類對象組成的元組,隻要class是其中一個候選類的子類,則傳回TRUE
(3)其他情況會抛出TypeError
class A:
pass
class B(A):
pass
class C:
pass
issubclass(B,A)
issubclass(B,B)
二、isinstance(object,classinfo)
如果第一個參數(object)是第二個參數(classinfo)的執行個體對象,則傳回TRUE,否則傳回FALSE
(1)如果object是classinfo的子類的一個執行個體,也符合條件
(2)classinfo可以是類對象組成的元組,隻要object是其中一個候選對象的執行個體,則傳回TRUE
b = B()
isinstance(b,B)
isinstance(b,A)
三、hasattr(object,name)
hasattr( ):測試一個對象是否有指定的屬性
第一個參數(object)是對象,第二個參數(name)是屬性名
class C:
def __init__(self, x=0):
self.x = x
c = C()
# 屬性名要用引号括起來
hasattr(c, 'x')
四、getattr(object,name[,default])
用于傳回對象指定的屬性值,如果指定的屬性不存在,則傳回default,若沒有則抛出ArttributeError
五、setattr(object,name,value)
如果指定的屬性不存在,則建立屬性并指派
六、delattr(object,name)
删除對象中指定的屬性,如果屬性不存在,則抛出AttributeError異常
七、property(fget=None,fset=None,fdel=None,doc=None)
property()傳回一個可以設定屬性的屬性
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)
在這個例子中setSize方法名設定size屬性,getSize方法名擷取屬性,delSzie方法名删除屬性
當需要對程式大改時,由于隻為使用者通路size屬性提供了x屬性,是以無論内部怎麼改動,隻需要修改相應的property()的參數,使用者仍然隻需要去操作x屬性,沒有任何影響