我想寫一個程序,它接受一個數字p作爲輸入,併產生一個數字的類型構造函數,該數字遵從整數運算模p。什麼是「元類」的方式來做到這一點?
到目前爲止,我有
def IntegersModP(p):
N = type('IntegersMod%d' % p,(), {})
def __init__(self, x): self.val = x % p
def __add__(a, b): return N(a.val + b.val)
... (more functions) ...
attrs = {'__init__': __init__, '__add__': __add__, ... }
for name, f in attrs.items():
setattr(N, name, f)
return N
這工作得很好,但我想知道什麼是Python的方式做,這是我的理解會用元類。
爲什麼要使用元類? – user2357112
我不知道你爲什麼想在這裏使用元類,你可以使用一個簡單的類語句並將'p'傳遞給'__init__'。 –
@AshwiniChaudhary這是不可接受的,因爲你不應該能夠添加兩個不同模數的實例。 (您將使用哪種模數?) – JeremyKun