参考#

引用是一种名称绑定。它将一个名称(例如foo)绑定到一个对象上。 引用由用户手动创建, 作为UserSpace的属性:

>>> space.foo = 1

当引用(Reference)作为UserSpace的属性被创建时, 该名称会在与该UserSpace关联的命名空间中变得可用。 子Cells的公式(Formulas)会在该命名空间中进行求值, 因此出现在公式中的名称会指向该引用所绑定的对象。 继续上面的例子, 假设在同一个Space space中定义了Cells baz, 就像foo那样:

>>> space.baz.formula
def baz():
    return foo

foobaz 定义中指向 1

>>> space.baz()
1

引用也可以作为Model对象的属性创建。 这样的引用可以从Model中的任何Space访问。 假设model是一个Model对象, 并且是space的父级:

>>> model.bar = "bar"

bar 在上面定义的内容也在 space 中定义了:

>>> space.bar
'bar'

并且 bar 可以从子级 Cells 的公式中引用 model

>>> def baz():
...     return bar

>>> space.baz = baz

>>> space.baz.formula
def baz():
    return bar

>>> space.baz()
'bar'

引用对象本身对用户是隐藏的,绑定对象始终通过名称被引用。要访问引用对象的属性,需使用ReferenceProxy对象。

ReferenceProxy#

class ReferenceProxy(impl)[源代码]#

代理接口以连接引用

引用对象不会直接暴露给用户,因此需要通过ReferenceProxy对象来与引用进行交互。可以通过get_object()函数创建并返回一个引用的代理对象,只需将引用的完整点分名称传递给name参数,并向as_proxy参数传递True即可:

>>> mx.get_object("Model1.Space1.foo", as_proxy=True)

Reference与Model、Space和Cells类共享其最终基类,以下是这些类共有的属性。

name#

引用的名称。

Type:

str

fullname#

对象的点分名称。

Type:

str

parent#

该引用的父级。

model#

该引用所属的Model。

另请参阅

get_object(), ReferenceNode

属性#

value

返回引用的对象

refmode

返回引用模式