這篇文章主要為大家展示了“Jython內(nèi)省服務(wù)的示例分析”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Jython內(nèi)省服務(wù)的示例分析”這篇文章吧。
成都創(chuàng)新互聯(lián)公司一直秉承“誠信做人,踏實(shí)做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務(wù)為基礎(chǔ),以質(zhì)量求生存,以技術(shù)求發(fā)展,成交一個客戶多一個朋友!為您提供成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)頁設(shè)計(jì)、小程序開發(fā)、成都網(wǎng)站開發(fā)、成都網(wǎng)站制作、成都軟件開發(fā)、app軟件開發(fā)公司是成都本地專業(yè)的網(wǎng)站建設(shè)和網(wǎng)站設(shè)計(jì)公司,等你一起來見證!
Jython的內(nèi)省服務(wù)
常常需要在運(yùn)行時確定一個對象的特性。我們稱這為內(nèi)省這個對象。 Java 平臺通過 java.lang.Class 類和 java.lang.reflect 包中的類提供了內(nèi)省服務(wù)。這些 API 雖然強(qiáng)大,但是它們不太容易使用。您猜對了,Jython提供了更簡單的內(nèi)省方式。
在 Jython 中,我們可以使用 dir 和vars 函數(shù)檢查任何對象 ―― 如模塊、函數(shù)、類、序列、映射等 ―― 的綁定。為了更好地理解它是如何工作的,考慮下面的例子。每一個 print 語句的輸出插入了前綴“...”(并重新編排)以方便閱讀dir 函數(shù)只返回綁定名,而 vars 函數(shù)返回名字和值,因此,當(dāng)兩個函數(shù)返回同樣的名字時,我們只需要使用 vars函數(shù),如下所示:
#-- empty start -- print "vars:", vars() ...vars: {'__doc__': None, '__name__': '__main__'} x = 1 y = 2 z = 3 l = [x, y, z] d = {x:"xxxx", y:"yyyy", z:"zzzz"} #-- 本地變量 -- print x, y, z, l, d ...1 2 3 [1, 2, 3] {3: 'zzzz', 2: 'yyyy', 1: 'xxxx'} #-- Jython內(nèi)?。禾砑颖镜刈兞?nbsp;-- print "vars:", vars() ...vars: {'__name__': '__main__', 'x': 1, \ ... 'd': {3: 'zzzz', 2: 'yyyy', 1: 'xxxx'}, '__doc__': None, \ ... 'y': 2, 'l': [1, 2, 3], 'z': 3} import sys #-- Jython內(nèi)省:plus import -- print "vars:", vars() ...vars: {'__name__': '__main__', 'z': 3, 'l': [1, 2, 3], \ ... '__doc__': None, 'y': 2, 'x': 1, 'sys': sys module, \ ... 'd': {3: 'zzzz', 2: 'yyyy', 1: 'xxxx'}} #-- Jython內(nèi)?。簊ys import -- print "vars sys:", vars(sys) ...vars sys: {'classLoader': \ ... < beanProperty classLoader type: java.lang.ClassLoader at 31845755>, ... ... many values removed ..., ... 'warnoptions': < reflected field public static \ ... org.python.core.PyList \ ... org.python.core.PySystemState.warnoptions at 1024901>} del x, y, z #-- Jython內(nèi)省:post delete -- print "vars:", vars() ...vars: {'__name__': '__main__', 'l': [1, 2, 3], '__doc__': None, \ ... 'sys': sys module, 'd': {3: 'zzzz', 2: 'yyyy', 1: 'xxxx'}} def func (x, y): return x, y class MyClass (): def __init__ (self, x, y): self.__x = x self.__y = y def method1 (self): return self.x + self.y def method2 (self, x, y): return self.x + self.y + x + y #-- Jython內(nèi)?。簆lus function and class -- print "vars:", vars() ....vars: {'func': < function func at 21569784>, '__name__': '__main__', \ ... 'l': [1, 2, 3], '__doc__': None, \ .... 'MyClass': < class __main__.MyClass at 1279942>, \ ... 'sys': sys module, 'd': {3: 'zzzz', 2: 'yyyy', 1: 'xxxx'}} #-- Jython內(nèi)省:function -- print "dir: ", dir(func) # **** dir and vars different here **** print "vars:", vars(func) ...dir: ['__dict__', '__doc__', '__name__', 'func_closure', \ ... 'func_code', 'func_defaults', 'func_doc', 'func_globals', 'func_name'] ...vars: None #-- Jython內(nèi)?。篶lass -- print "vars:", vars(MyClass) ...vars: {'__doc__': None, '__init__': < function __init__ at 17404503>, \ ... 'method2': < function method2 at 23511968>, '__module__': '__main__', \ ... 'method1': < function method1 at 28670096>} myclass = MyClass(1, 2) #-- Jython內(nèi)省:instance -- print "myclass:", myclass print "vars:", vars(myclass) ...myclass: < __main__.MyClass instance at 19014134> ...vars: {'_MyClass__y': 2, '_MyClass__x': 1}
注意 dir(x) 一般等同于 x.__dict__.keys(),而 vars(x) 一般等同于 x.__dict__。
以上是“Jython內(nèi)省服務(wù)的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
本文標(biāo)題:Jython內(nèi)省服務(wù)的示例分析
標(biāo)題URL:http://aaarwkj.com/article20/gpigjo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、品牌網(wǎng)站設(shè)計(jì)、用戶體驗(yàn)、定制網(wǎng)站、面包屑導(dǎo)航、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)