使用未知构造参数的旧实例创建新实例
我有一个新的类叫做 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