我正在使用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

最佳答案

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

您可以改用类工厂:

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)

10-06 14:25