Jython高级类特性深度解析
1. 引言
在Jython编程中,特殊属性(标识符带有两个前导和尾随下划线)在类中大量存在,它们是创建具有复杂行为的高度定制化对象的主要手段。添加这些特殊属性并非意味着增加难度,而是在应对复杂性时的有效策略。通过少量特殊方法,就能调整对象行为,使其表现得像列表,或者拦截属性访问,从而在设计、可重用性和灵活性方面获得巨大收益。
2. 预定义类属性
类和实例隐式地拥有某些特殊属性,这些属性在类定义执行或实例创建时自动出现。Jython会包装Java类和实例,使其也具有特殊属性。Jython类有五个特殊属性,而Java类有其中三个。
2.1 __name__
这是一个只读属性,包含类的名称。例如,对于以下代码中的 LineDatum
类:
# file: datum.py
import java
class LineDatum(java.util.Hashtable):
"""Collects points that lie on a line.
Instantiate with line slope and intercept: e.g. LineDatum(.5, 3)"""
def __init__(self, slope, incpt):
self.slope = slope
self.incpt = incpt
def addPoint(self, x, y):