成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Jython的內(nèi)省服務(wù):更簡(jiǎn)單的內(nèi)省方式

開發(fā) 后端
本文介紹Jython的內(nèi)省服務(wù)。在運(yùn)行時(shí)確定一個(gè)對(duì)象的特性稱為內(nèi)省這個(gè)對(duì)象。在 Jython 中,我們可以使用 dir 和vars 函數(shù)檢查任何對(duì)象。

Jython的內(nèi)省服務(wù)

常常需要在運(yùn)行時(shí)確定一個(gè)對(duì)象的特性。我們稱這為內(nèi)省這個(gè)對(duì)象。 Java 平臺(tái)通過(guò) java.lang.Class 類和 java.lang.reflect 包中的類提供了內(nèi)省服務(wù)。這些 API 雖然強(qiáng)大,但是它們不太容易使用。您猜對(duì)了,Jython提供了更簡(jiǎn)單的內(nèi)省方式。

在 Jython 中,我們可以使用 dir 和vars 函數(shù)檢查任何對(duì)象 ―― 如模塊、函數(shù)、類、序列、映射等 ―― 的綁定。為了更好地理解它是如何工作的,考慮下面的例子。每一個(gè) print 語(yǔ)句的輸出插入了前綴“...”(并重新編排)以方便閱讀dir 函數(shù)只返回綁定名,而 vars 函數(shù)返回名字和值,因此,當(dāng)兩個(gè)函數(shù)返回同樣的名字時(shí),我們只需要使用 vars函數(shù),如下所示:

  1. #-- empty start --  
  2. print "vars:", vars()  
  3. ...vars: {'__doc__'None'__name__''__main__'}  
  4.  
  5. x = 1 
  6. y = 2 
  7. z = 3 
  8. l = [x, y, z]  
  9. d = {x:"xxxx", y:"yyyy", z:"zzzz"}  
  10.  
  11. #-- 本地變量 --  
  12. print x, y, z, l, d  
  13. ...1 2 3 [123] {3'zzzz'2'yyyy'1'xxxx'}  
  14.  
  15. #-- Jython內(nèi)省:添加本地變量 --  
  16. print "vars:", vars()  
  17. ...vars: {'__name__''__main__''x'1, \  
  18. ... 'd': {3'zzzz'2'yyyy'1'xxxx'}, '__doc__'None, \  
  19. ... 'y'2'l': [123], 'z'3}  
  20.  
  21. import sys  
  22.  
  23. #-- Jython內(nèi)省:plus import --  
  24. print "vars:", vars()  
  25. ...vars: {'__name__''__main__''z'3'l': [123], \  
  26. ... '__doc__'None'y'2'x'1'sys': sys module, \  
  27. ... 'd': {3'zzzz'2'yyyy'1'xxxx'}}  
  28.  
  29. #-- Jython內(nèi)省:sys import --  
  30. print "vars sys:", vars(sys)    
  31. ...vars sys: {'classLoader': \  
  32. ...     < beanProperty classLoader type: java.lang.ClassLoader at 31845755>,   
  33. ...     ... many values removed ...,  
  34. ... 'warnoptions': < reflected field public static \  
  35. ...     org.python.core.PyList \  
  36. ...     org.python.core.PySystemState.warnoptions at 1024901>}  
  37.  
  38. del x, y, z  
  39.  
  40. #-- Jython內(nèi)省:post delete --  
  41. print "vars:", vars()  
  42. ...vars: {'__name__''__main__''l': [123], '__doc__'None, \  
  43. ... 'sys': sys module, 'd': {3'zzzz'2'yyyy'1'xxxx'}}  
  44.  
  45. def func (x, y):  
  46.     return x, y  
  47.  
  48. class MyClass ():  
  49.     def __init__ (self, x, y):  
  50.         self.__x = x  
  51.         self.__y = y  
  52.  
  53.     def method1 (self):  
  54.         return self.x + self.y  
  55.  
  56.     def method2 (self, x, y):  
  57.         return  self.x + self.y + x + y  
  58.  
  59. #-- Jython內(nèi)省:plus function and class --  
  60. print "vars:", vars()  
  61. ....vars: {'func': < function func at 21569784>, '__name__''__main__', \  
  62. ...  'l': [123], '__doc__'None, \  
  63. .... 'MyClass': < class __main__.MyClass at 1279942>, \  
  64. ...  'sys': sys module, 'd': {3'zzzz'2'yyyy'1'xxxx'}}  
  65.  
  66. #-- Jython內(nèi)省:function --  
  67. print "dir: ", dir(func)     # **** dir and vars different here ****  
  68. print "vars:", vars(func)  
  69. ...dir:  ['__dict__''__doc__''__name__''func_closure', \  
  70. ... 'func_code''func_defaults''func_doc''func_globals''func_name']  
  71. ...vars: None 
  72.  
  73. #-- Jython內(nèi)省:class --  
  74. print "vars:", vars(MyClass)  
  75. ...vars: {'__doc__'None'__init__': < function __init__ at 17404503>, \  
  76. ... 'method2': < function method2 at 23511968>, '__module__''__main__', \  
  77. ... 'method1': < function method1 at 28670096>}  
  78.  
  79. myclass = MyClass(12)  
  80.  
  81. #-- Jython內(nèi)省:instance --  
  82. print "myclass:", myclass  
  83. print "vars:", vars(myclass)  
  84. ...myclass: < __main__.MyClass instance at 19014134>  
  85. ...vars: {'_MyClass__y'2'_MyClass__x'1}  

注意 dir(x) 一般等同于 x.__dict__.keys(),而 vars(x) 一般等同于 x.__dict__。

【編輯推薦】

  1. Jython特殊屬性介紹
  2. Jython的繼承能力:?jiǎn)卫^承和多繼承
  3. 常用Jython方法介紹:init和del
  4. 介紹Jython類:添加定義類屬性及隱藏變量
  5. Jython中的對(duì)象——面向?qū)ο蟮恼Z(yǔ)言概述
責(zé)任編輯:yangsai 來(lái)源: 網(wǎng)絡(luò)
相關(guān)推薦

2011-02-28 09:51:43

內(nèi)省

2011-07-01 15:04:49

Qt 內(nèi)省

2025-01-20 00:00:00

反射Java語(yǔ)言

2011-08-02 18:07:03

iPhone 內(nèi)省 Cocoa

2010-03-12 08:55:06

Java內(nèi)省反射

2025-01-15 00:00:00

Java內(nèi)省性能

2025-01-10 00:00:00

內(nèi)省機(jī)制JavaBean描述器

2011-07-07 14:10:21

Cocoa 內(nèi)省 hash

2021-06-28 10:27:58

MacOSApp公證AppStore

2024-01-17 10:05:09

Python內(nèi)省反射機(jī)制

2021-04-25 08:48:36

Traefik mes服務(wù)網(wǎng)格Kubernetes集

2009-07-16 11:04:17

Jython連接數(shù)據(jù)庫(kù)

2009-07-16 13:09:46

Jython安裝

2022-10-17 00:14:55

微服務(wù)稅mock代理服務(wù)

2009-07-14 15:20:25

Jython腳本Jython解釋器

2011-05-12 10:48:49

CSS清理浮動(dòng)

2012-05-02 10:03:56

2009-07-10 17:33:39

jython語(yǔ)言什么是JythonJython

2009-07-15 17:49:09

Jython開發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 中文字幕91 | 日韩国产在线 | 日韩a视频 | 国产精品视频500部 a久久 | 日日夜夜精品视频 | 精品三区| 亚洲系列第一页 | 精品一区二区久久久久久久网站 | 国产电影一区二区 | 日韩一区不卡 | 天堂av中文在线 | 欧美一级久久久猛烈a大片 日韩av免费在线观看 | 91精品国产91久久久久久 | 在线看亚洲 | 华人黄网站大全 | 日韩国产中文字幕 | 欧美伊人| 国产高清在线精品一区二区三区 | 日本一区二区三区在线观看 | 免费在线黄色av | 欧美xxxx色视频在线观看免费 | 亚洲精品18 | 亚洲激情在线观看 | 欧美日韩一区二区电影 | 午夜影院在线免费观看视频 | 欧美精品在线一区 | 久久视频免费观看 | 欧美视频第三页 | 在线看无码的免费网站 | 久久国产福利 | 国产视频三区 | 亚洲精品一区二区 | 亚洲a在线观看 | 六月婷婷久久 | 99re视频在线观看 | 国产a区 | 一级毛片免费完整视频 | 精品国产一区二区久久 | 视频1区2区 | 色视频网站免费 | 欧美综合久久久 |