如何设置封闭单元格的内容?

问题描述 投票:0回答:1

[The following question显示了如何创建闭包单元对象,以便以编程方式构造具有闭包的函数。

但是,这里存在一个鸡与蛋的问题,我需要创建单元格来创建函数,但是直到函数创建后,我才能最终确定希望单元格具有的值。 (作为一个疯狂的例子,如果我想将函数本身放在其中一个单元格中怎么办?)

是否可以设置单元格的cell_contents?我尝试分配给它,但是却收到AttributeError,声称cell_contents不可写!

编辑:我刚刚意识到cell_contents在最新版本的Python3(3.7)中是可写的,尽管不是在我正在使用的最新pypy(3.6)版本中。

python python-3.x pypy
1个回答
0
投票

在python 3.x上,可以完成以下肮脏的把戏:

from types import FunctionType

def set_cell(cell, value):
    def cell_setter(value):
        nonlocal cell
        cell = value # pylint: disable=unused-variable
    func = FunctionType(cell_setter.__code__, globals(), "", None, (cell,)) # same as cell_setter, but with cell being the cell's contents
    func(value)

为了扩展注释,在执行func时,将调用cell_setter的代码,但将'cell'非本地映射到单元格的[[content,因此为其分配值将更改单元格的内容。

((我不确定在python 2中是否也有办法不使用C代码,如对链接问题的回答。)
© www.soinside.com 2019 - 2024. All rights reserved.