第二十七章 Classes - 引用其他类成员
引用其他类成员
在方法中,使用下面的语法来引用其他类成员:
- 要引用
ObjectScript
中的参数,使用如下表达式:
..#PARAMETERNAME
只能使用ObjectScript
直接访问参数。要从Python
访问参数,请使用ObjectScript
包装器方法返回参数,并在需要时调用此方法。例如:
Class User.Employee Extends %RegisteredObject
{
Parameter ADDRESS = "123 Main St.";
ClassMethod AddressWrapper() As %String [ Language = objectscript ]
{
return ..#ADDRESS
}
ClassMethod OfficeLocation() [ Language = python ]
{
import iris
location=iris.cls("User.Employee").AddressWrapper()
print("This office is located at", location)
}
Method EmployeeLocation() [ Language = python ]
{
location=self.AddressWrapper()
print("This employee works at", location)
}
}
要从Python
访问一个类方法,可以在所有上下文中使用iris.cls("Package.Class"). classmethodname()
语法。在Python
实例方法中,还可以使用更短的self.classMethodName()
语法。
提供的类中,按照惯例,所有参数都以大写字母定义,但代码不需要这样做。
- 要引用另一个实例方法,使用这样的表达式:
..methodname(arguments)
self.methodname(arguments)
注意,不能在类方法中使用此语法来引用实例方法。
- 要引用另一个类方法,请使用以下语法:
..classmethodname(arguments)
# technique 1
iris.cls("Package.Class").classmethodname(arguments)
# technique 2
iris.cls(__name__).classmethodname(arguments)
请注意,不能使用Python self
语法访问类方法。相反,可以使用__name__
属性来获取当前类的名称,如上面的示例所示。
- (仅在实例方法中)要引用实例的属性,使用这样的表达式:
..PropertyName
self.PropertyName
类似地,要引用对象值属性的属性,使用如下表达式:
..PropertyNameA.PropertyNameB
self.PropertyNameA.PropertyNameB
ObjectScript
示例中使用的语法称为点语法。
此外,还可以调用对象值属性的实例方法或类方法。例如:
Do ..PropertyName.MyMethod()
self.PropertyName.MyMethod()
网友评论