使用未知构造参数的旧实例创建新实例

0 投票
1 回答
59 浏览
提问于 2025-04-14 18:03

我有一个新的类叫做 DataSheet,它是从 Pandas 这个库继承来的。

class DataSheet(DataFrame):
    def __init__(self, name=None, **kwargs):
        super().__init__(**kwargs)
        self.name = name

最开始的数据框是通过 pd.read_excel() 这个函数得到的。请问能不能直接用 Pandas 来构造一个新的 DataSheet 实例呢?

目前,我的解决方案是:

DataSheet(
    name=k,
    data=v.to_dict(),
    index=v.index,
    columns=v.columns,
)

还有一个关于 FT4222 的类似问题,详细信息可以查看文档

我想写一个新的类(比如说 my_FT4222),这个类是继承自 FT4222 的,我可以通过 ft4222.openByDescription 来获取实例。

我能不能用通过 ft4222.openByDescription 得到的实例来创建 my_FT4222 呢?

1 个回答

0

别担心这个对象是怎么构建的,只需要获取你需要的数据来重建它。对于Pandas的数据框(dataframe),这意味着你需要索引、列和数据(就像你现在做的那样),还有数据类型(dtype)。最简单的方法就是直接传递整个数据框:

DataSheet(data=df, name='some_name')

不过,这样做不会复制 df.flags。另外要注意的是,它也不会复制 df.attrs,但这是故意设计的。

顺便提一下, self.name 可能是数据框的一列,所以如果你想把它设置为一个普通属性,可能需要走一些弯路,像这样:

self.__dict__['name'] = name

撰写回答