Jython特殊屬性介紹
Jython特殊屬性一覽
Jython 類提供了對(duì)幾個(gè)特殊屬性的支持。下面列出最重要的幾個(gè):
名字 作用 注釋 
__dict__ 對(duì)象的可寫屬性 可以用于內(nèi)省對(duì)象的屬性 
__class__ 對(duì)象的類 訪問對(duì)象的類(類似于 Java 代碼中的x.getClass() ) 
__bases__ 對(duì)象的立即父類的元組 可以用于內(nèi)省對(duì)象的父類 
Jython特殊屬性——改變現(xiàn)有實(shí)例的類
與大多數(shù)其他語(yǔ)言不同,在 Jython 中可以改變現(xiàn)有實(shí)例的類。這會(huì)將可以使用的實(shí)例方法改變?yōu)樾骂惖姆椒?,但是不?huì)改變所有預(yù)先存在的字段。例如,要改變一個(gè)實(shí)例的類,將新類賦值給特殊屬性 __class__ ,如下所示:
- x = SomeClass()
 - print isinstance(x, SomeClass) # prints: 1 (true)
 - print isinstance(x, SomeOtherClass) # prints: 0 (false)
 - :
 - # change the class (that is, the type) of the instance here
 - x.__class__ = SomeOtherClass
 - print isinstance(x, SomeClass) # prints: 0 (false)
 - print isinstance(x, SomeOtherClass) # prints: 1 (true)
 - y = SomeOtherClass()
 - print x.__class__ == y.__class__ # prints: 1 (true)
 
這樣改變之后,x 實(shí)例將支持 SomeOtherClass 的方法,而不是以前的 SomeClass 的方法。在改變對(duì)象的類時(shí),要注意實(shí)例應(yīng)具有對(duì)新類正確的屬性。
Jython特殊屬性——其他內(nèi)省函數(shù)
特殊屬性中描述的屬性允許對(duì)類進(jìn)行更多內(nèi)省。特別是,可以用 __dict__ 屬性確定類中的方法和實(shí)例中的字段。
除了 dir 和 vars,Jython 還提供了其他的用于內(nèi)省類和實(shí)例的函數(shù),如下所示:
函數(shù) 注釋 
hasattr(obj, name) 測(cè)試指定的屬性是否存在 
getattr(obj, name{,default}) 如果屬性存在,得到屬性的名字,否則返回默認(rèn)值(如果沒有默認(rèn)值,則拋出一個(gè)異常) 
setattr(obj, name, value) 設(shè)置指定屬性的值 
delattr(obj, name) 刪除指定的屬性 
【編輯推薦】















 
 
 
 
 
 
 