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
我正在基于大量数据点构建破折号应用程序。由于我不想每次需要时都从磁盘(> 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