这篇文章主要介绍“Jython的特殊属性介绍”,在日常操作中,相信很多人在Jython的特殊属性介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Jython的特殊属性介绍”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
Jython特殊属性一览
Jython 类提供了对几个特殊属性的支持。下面列出最重要的几个:
名字 作用 注释
__dict__ 对象的可写属性 可以用于内省对象的属性
__class__ 对象的类 访问对象的类(类似于 Java 代码中的x.getClass() )
__bases__ 对象的立即父类的元组 可以用于内省对象的父类
Jython特殊属性——改变现有实例的类
与大多数其他语言不同,在 Jython 中可以改变现有实例的类。这会将可以使用的实例方法改变为新类的方法,但是不会改变所有预先存在的字段。例如,要改变一个实例的类,将新类赋值给特殊属性 __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 实例将支持 SomeOtherClass 的方法,而不是以前的 SomeClass 的方法。在改变对象的类时,要注意实例应具有对新类正确的属性。
Jython特殊属性——其他内省函数
特殊属性中描述的属性允许对类进行更多内省。特别是,可以用 __dict__ 属性确定类中的方法和实例中的字段。
除了 dir 和 vars,Jython 还提供了其他的用于内省类和实例的函数,如下所示:
函数 注释
hasattr(obj, name) 测试指定的属性是否存在
getattr(obj, name{,default}) 如果属性存在,得到属性的名字,否则返回默认值(如果没有默认值,则抛出一个异常)
setattr(obj, name, value) 设置指定属性的值
delattr(obj, name) 删除指定的属性
到此,关于“Jython的特殊属性介绍”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。