我IntegerMod為整數模一個素數編寫了一個自定義類。一切正常。然后將它們用作用 構建的多項式的系數numpy.poly1d,并設法實現足夠的方法,IntegerMod以便對這些多項式的操作按我的需要工作(例如,找到給定一堆點的插值多項式)。只剩下一點細節,那就是print(pol)那些多項式實際上失敗了,因為 Python 嘗試對%g系數使用字符串格式,但未能說明IntegerMod應該是字符串還是數字。實際上IntegerMod繼承自numbers.Number,但似乎還不夠。我的問題是,我可以在我的班級中實現字符串格式的行為嗎?如果沒有,我應該如何處理這個問題?產生錯誤的 MWE:import numbersimport numpy as npclass IntegerMod(numbers.Number): def __init__(self, k, p): self.k = k % p self.p = p def __repr__(self): return "<%d (%d)>" % (self.k, self.p)if __name__ == "__main__": p = 13 coef1 = IntegerMod(2, p) coef2 = IntegerMod(4, p) print(coef1) # Works as expected pol = np.poly1d([coef1, coef2]) print(pol) """ # error: s = '%.4g' % q TypeError: float() argument must be a string or a number, not 'IntegerMod' """
1 回答

青春有我
TA貢獻1784條經驗 獲得超8個贊
也許您應該實現該__float__
方法,因為 poly1d 格式需要浮點數。
像這樣的東西
def __float__(self): return float(self.k)
添加回答
舉報
0/150
提交
取消