Python元类:如何推广这个助手类?

时间:2014-03-24 20:48:35

标签: python class python-2.7 dynamic pytables

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

1 个答案:

答案 0 :(得分: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)