Python 中的指针解决方法

Pointer workaround in Python

我正在基于大量数据点构建破折号应用程序。由于我不想每次需要时都从磁盘(> 30m 数据点)加载所有数据,因此我构建了一个 DataManager 来管理数据。由于该应用程序的每个视图都有多个脚本,因此我在切换页面时将管理器传递给了每个视图。

嗯,因为 Python 不是 C,Java 也不是 Swift,它实际上不适用于指针。那么有没有一种 python 方法可以在打开网站时不加载所有数据点来实现这种行为?

这是我目前的 Python 实现:

dm = DataManager.DataManager()

@app.callback(Output('page-content', 'children'),
            [Input('url', 'pathname')])
def display_page(pathname):
    if pathname == '/runningmap':
        return RunningMap(dm)
    elif pathname == '/settings':
        return Settings(dm)
    else:
        return RunningMap(dm)

在Python中,所有对象都是按引用传递的。如果你想在别处传递一些东西,然后仍然让调用者改变它,你可以使用一个包含单个元素的列表,就好像它是一个指针一样。

class Foo:

  def __init__(a):
    self.a = a

  def p():
    print(self.a)


a_ptr = [1]
foo = Foo(a_ptr)
foo.p()
a_ptr[0] += 1
foo.p()

会打印

1
2