xlrd API: 获取较低级别对象的所有者(例如从 Cell 对象获取 Sheet 对象)

xlrd API: get the owner of a lower level object (e.g. get the Sheet object from the Cell object)

我有一个函数接受一个 xlrd.Cell 对象作为参数。但是,该函数还需要访问 "owns" 单元格中的 xlrd.Sheet 对象。如果不需要的话,我宁愿不必也传递它来自的 sheet 对象。 API 是否提供了获取拥有单元格的 sheet 的方法?

如果可能的话,从 sheet 对象访问 xlrd.Book 对象也很有用。

我仔细查看了 API 并且似乎没有这些可用的,但我因忽视此类事情而臭名昭著。

没有。 xlrd.Cell对象的定义是:

# Type:       Cell
# String Form:number:42.0
# File:       c:\python27\lib\site-packages\xlrd\sheet.py
# Source:
class Cell(BaseObject):

    __slots__ = ['ctype', 'value', 'xf_index']

    def __init__(self, ctype, value, xf_index=None):
        self.ctype = ctype
        self.value = value
        self.xf_index = xf_index

    def __repr__(self):
        if self.xf_index is None:
            return "%s:%r" % (ctype_text[self.ctype], self.value)
        else:
            return "%s:%r (XF:%r)" % (ctype_text[self.ctype], self.value, self.xf_index)

因此 Cell 对象中没有对父 Worksheet 的引用。您可以轻松地扩展 xlrd.Worksheetxlrd.Cell 类 来添加这样的引用,但您也可以将父工作表也传递给您的函数并省去麻烦。