Jython特殊属性介绍

开发 后端
本文介绍Jython的特殊属性。与大多数其他语言不同,在 Jython 中可以改变现有实例的类。这会将可以使用的实例方法改变为新类的方法,但是不会改变所有预先存在的字段。

Jython特殊属性一览  

Jython 类提供了对几个特殊属性的支持。下面列出最重要的几个:

名字 作用 注释
__dict__ 对象的可写属性 可以用于内省对象的属性
__class__ 对象的类 访问对象的类(类似于 Java 代码中的x.getClass() )
__bases__ 对象的立即父类的元组 可以用于内省对象的父类

Jython特殊属性——改变现有实例的类

与大多数其他语言不同,在 Jython 中可以改变现有实例的类。这会将可以使用的实例方法改变为新类的方法,但是不会改变所有预先存在的字段。例如,要改变一个实例的类,将新类赋值给特殊属性 __class__ ,如下所示:

  1. x = SomeClass()   
  2. print isinstance(x, SomeClass) # prints: 1 (true)  
  3. print isinstance(x, SomeOtherClass) # prints: 0 (false)  
  4.   :  
  5. # change the class (that is, the type) of the instance here  
  6. x.__class__ = SomeOtherClass   
  7. print isinstance(x, SomeClass) # prints: 0 (false)  
  8. print isinstance(x, SomeOtherClass) # prints: 1 (true)  
  9.  
  10. y = SomeOtherClass()   
  11. print x.__class__ == y.__class__ # prints: 1 (true)  

这样改变之后,x 实例将支持 SomeOtherClass 的方法,而不是以前的 SomeClass 的方法。在改变对象的类时,要注意实例应具有对新类正确的属性。

Jython特殊属性——其他内省函数

特殊属性中描述的属性允许对类进行更多内省。特别是,可以用 __dict__ 属性确定类中的方法和实例中的字段。

除了 dir 和 vars,Jython 还提供了其他的用于内省类和实例的函数,如下所示:

函数 注释
hasattr(obj, name) 测试指定的属性是否存在
getattr(obj, name{,default}) 如果属性存在,得到属性的名字,否则返回默认值(如果没有默认值,则抛出一个异常)
setattr(obj, name, value) 设置指定属性的值
delattr(obj, name) 删除指定的属性

【编辑推荐】

  1. Jython的继承能力:单继承和多继承
  2. 常用Jython方法介绍:init和del
  3. 介绍Jython类:添加定义类属性及隐藏变量
  4. Jython中的对象——面向对象的语言概述
  5. 在Eclipse下配置Jython的简易流程
责任编辑:yangsai 来源: 网络
相关推荐

2011-12-28 10:49:44

Silverlight

2009-07-14 17:12:55

Jython类

2009-07-14 17:21:14

Jython方法

2009-07-10 17:33:39

jython语言什么是JythonJython

2009-07-16 16:40:14

Jython 2.2

2009-07-15 16:35:55

Jython访问Jav

2009-07-16 13:09:46

Jython安装

2009-12-22 15:14:33

WCF调用

2009-07-14 15:20:25

Jython脚本Jython解释器

2009-12-15 15:19:30

Ruby访问控制

2009-07-07 09:44:11

特殊类型设计

2010-09-30 14:55:23

Javascriptfloat

2009-12-28 15:39:33

WPF滑动条

2009-07-10 18:10:18

Jython编写SerJython

2023-11-09 08:55:17

Python双下划线

2009-12-25 11:04:51

WPF Border

2009-07-15 17:38:58

Jython全局函数

2009-07-10 17:40:58

Jython访问MyS

2010-09-13 17:36:02

overflowCSS

2010-03-02 13:54:43

WCF控制服务对象释放
点赞
收藏

51CTO技术栈公众号