美文网首页
第二十七章 Classes - 引用其他类成员

第二十七章 Classes - 引用其他类成员

作者: Cache技术分享 | 来源:发表于2023-09-13 07:31 被阅读0次

    第二十七章 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()
    

    相关文章

      网友评论

          本文标题:第二十七章 Classes - 引用其他类成员

          本文链接:https://www.haomeiwen.com/subject/thauvdtx.html