【问题标题】:Python metaclasses: how do I generalize this helper class?Python 元类:我如何概括这个帮助类?
【发布时间】:2014-05-02 10:50:36
【问题描述】:

我正在使用PyTables 将 Python 数据存储在 HDF5 文件中,它需要一个辅助类来创建表。这是一个例子:

class PacketData(pt.IsDescription):
    data = pt.UInt8Col(shape=(128,))


# later code does this:
self.tdata = self.hfile.createTable(self.g, 'packetdata', PacketData,
                            filters=filters)

有没有办法使用元类来概括128

【问题讨论】:

    标签: python class python-2.7 dynamic pytables


    【解决方案1】:

    我认为您在这里不需要元类。事实上,由于元类固定在定义类的位置,我认为它不会为您提供参数化形状的机会。

    您可以改用类工厂:

    def packetdata(n):
        class PacketData(pt.IsDescription):
            data = pt.UInt8Col(shape=(n,))
        return PacketData
    
    self.tdata = self.hfile.createTable(self.g, 'packetdata', packetdata(128),
                                filters=filters)
    

    【讨论】:

    • 哦,很好。我不知道你能做到。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    • 2018-02-11
    • 2022-01-10
    • 2022-01-18
    • 1970-01-01
    • 2012-11-08
    • 2011-01-14
    相关资源
    最近更新 更多