第二十七章 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()
09-20 18:39