Jython内省服务的示例分析

这篇文章主要为大家展示了“Jython内省服务的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Jython内省服务的示例分析”这篇文章吧。

成都创新互联公司一直秉承“诚信做人,踏实做事”的原则,不欺瞒客户,是我们最起码的底线! 以服务为基础,以质量求生存,以技术求发展,成交一个客户多一个朋友!为您提供成都网站制作、成都网站设计、成都网页设计、小程序开发、成都网站开发、成都网站制作、成都软件开发、app软件开发公司是成都本地专业的网站建设和网站设计公司,等你一起来见证!

Jython的内省服务

常常需要在运行时确定一个对象的特性。我们称这为内省这个对象。 Java 平台通过 java.lang.Class 类和 java.lang.reflect 包中的类提供了内省服务。这些 API 虽然强大,但是它们不太容易使用。您猜对了,Jython提供了更简单的内省方式。

在 Jython 中,我们可以使用 dir 和vars 函数检查任何对象 ―― 如模块、函数、类、序列、映射等 ―― 的绑定。为了更好地理解它是如何工作的,考虑下面的例子。每一个 print 语句的输出插入了前缀“...”(并重新编排)以方便阅读dir 函数只返回绑定名,而 vars 函数返回名字和值,因此,当两个函数返回同样的名字时,我们只需要使用 vars函数,如下所示:

#-- 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内省:添加本地变量 --  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内省: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内省:sys 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内省: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内省:plus 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内省: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内省:class --  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内省: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内省服务的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!

本文标题:Jython内省服务的示例分析
标题URL:https://www.cdcxhl.com/article20/gpigjo.html

成都网站建设公司_创新互联,为您提供微信小程序品牌网站设计用户体验定制网站面包屑导航手机网站建设

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都网站建设公司