2014-03-24 18 views
1

我使用PyTables將Python數據存儲在HDF5文件中,它需要一個輔助類來創建一個表。這裏有一個例子:Python元類:我如何概括此輔助類?

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

我不認爲你需要這裏的元類。實際上,因爲元類是固定在定義類的地方,所以我認爲它不能爲您提供參數化形狀的機會。

你可以使用一個類工廠來代替:

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) 
+0

哦,好的。我不知道你可以這樣做。 –