我无法弄清楚要搜索什么,所以如果它已经在那里,我提前道歉,并且很乐意将搜索参考带到其他地方。
一些背景知识:我正在为python Excel 库开发一些额外的功能,我想做的一件事是在一次调用中将样式应用于一系列单元格。现在,我们的代码允许我们做一些像ws[1][1].font.bold = True
加粗单元格 A1 之类的事情。我们还有一个范围运算符,它允许我们做一些事情,比如ws.range("A1:B2").value = 1
将该范围内的所有值设置为 1。
我现在想做的是增加做事的能力ws.range("A1:B2").font.bold = True
,但我不知道怎么做。range("A1:B2")
是一个没有显式引用单元格的对象(只是两个角以节省空间),但没有显式地具有.font
or.value
属性,而是通过@property
装饰器拦截以适当地应用。
问题是,如果我添加一个@property
装饰器来创建一个属性,我可以返回一个新的字体对象,但是在修改属性以将其应用于范围内的所有单元格font
之后,我无法获取这个字体对象。bold
我在想我可以yield
使用字体,然后在 之后添加应用逻辑yield
,但这不能作为yield
返回生成器。我能想到的唯一其他想法是创建一个显式.font
对象,然后在Range
类中覆盖.font.__setattr__
以侦听更改,但是我不知道如何从__setattr__
需要应用的范围内获取原始范围而不必创建第三个中介类。这不仅看起来很尴尬,而且看起来非常不合时宜。
这样的事情是否可能而不必采用相当深奥的方法?我希望我的解释很清楚,如果它已经存在,请随时向我指出现有的参考资料——我只是不知道要搜索什么。