【问题标题】:Initialize python dataclass with an openpyxl object使用 openpyxl 对象初始化 python 数据类
【发布时间】:2020-09-05 05:38:09
【问题描述】:

我有一个用 openpyxl Cell 对象初始化的 python 类。它是一个传统的单元类,它接受 Cell 对象并读取 Cell 对象的一些属性并将其存储为自己的,

import openpyxl as oxl
class oxl_cell_objectclass(object):
    def __init__(self, cell):
        self.cell = cell
        self.xl_column = cell.column
        self.xl_row = cell.row
        self.cell_value = cell.value

如何在 python 数据类中做瘦(在 python 3.7 + 中引入)。我尝试了下面显示的代码,它给了我一个找不到单元格的异常,

@dataclass
class oxl_cell_dataclass:
    cell : oxl.cell.cell.Cell #openpyxl Cell object
    xl_column : oxl.cell.cell.Cell.column = cell.column #default value for xl_column attribute

【问题讨论】:

  • 这在我看来就像你根本不需要做的事情。

标签: python python-3.7 openpyxl python-dataclasses


【解决方案1】:

我通过使用继承解决了这个问题。我必须对我的代码进行两次更改才能使其正常工作

  • 继承 openpyxl Cell 对象使代码工作
  • 定义一个post_init函数来分配单元格属性

工作代码如下所示,

@dataclass
class oxl_cell_dataclass(oxl.cell.cell.Cel):
    cell : oxl.cell.cell.Cell #openpyxl Cell object

    def __post_init__(self):
       self.xl_column = self.cell.column

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 2012-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多