這個問題與關於PyTables元類的this question有關。我試圖在子類的PyTables元類IsDescription
,通過一個變量,以定義列的形狀:爲什麼Python元類禁止將參數傳遞給__init__方法?
import tables
class MyClass(tables.IsDescription):
def __init__(self, param):
var1 = tables.Float64Col(shape=(param))
MyClass1 = MyClass(12)
這引發錯誤:TypeError: object.__new__()
沒有參數。使用self.var1 = ...
給出了相同的錯誤。
在this SO question報告了同樣的錯誤,其原因歸因於IsDescription
是元類。
我的問題(這個問題沒有在鏈接問題上回答,也沒有通過谷歌搜索找到任何東西)是:爲什麼元類禁止這個功能?它是特定於這個元類還是所有元類的通用?