不変型とは何なのか混乱しています。私のfloat
オブジェクトが不変であると考えられていることを知っています。
class RoundFloat(float):
def __new__(cls, val):
return float.__new__(cls, round(val, 2))
これは、クラスの構造/階層のために不変であると見なされていますか?つまりfloat
、クラスの最上位にあり、独自のメソッド呼び出しです。このタイプの例と似ています(たとえ私の本にdict
変更可能とありますが):
class SortedKeyDict(dict):
def __new__(cls, val):
return dict.__new__(cls, val.clear())
これに対して、次のタイプの例では、ミュータブルにはクラス内にメソッドがあります。
class SortedKeyDict_a(dict):
def example(self):
return self.keys()
また、最後のについて、class(SortedKeyDict_a)
このタイプのセットをそれに渡した場合:
d = (('zheng-cai', 67), ('hui-jun', 68),('xin-yi', 2))
example
メソッドを呼び出さずに、辞書を返します。エラーとしてフラグを立てます。クラスに整数を渡してみましたが、エラーは報告されませんでした。SortedKeyDict
__new__
RoundFloat
__new__