-
Notifications
You must be signed in to change notification settings - Fork 7
Description
概要
invariant が「不変な条件」と訳されている箇所がありましたが、「不変条件」が定着した訳だと思うので、そのようにした方が良いと思います。
問題のある箇所 (URLで指定すること)
https://docs.python.org/ja/3.15/library/pickle.html#object.__setstate__
注釈 非 pickle 化に際しては、
__getattr__(),__getattribute__(), または__setattr__()といったメソッドがインスタンスに対して呼ばれることがあります。これらのメソッドが何らかの内部の不変な条件が真であることを必要とする場合、その型は__new__()メソッドを実装してそのような不変な条件を構築すべきです。なぜならばインスタンスの非 pickle 化においては__init__()メソッドは呼ばれないからです。
原文
https://docs.python.org/3.15/library/pickle.html#object.__setstate__
Note At unpickling time, some methods like
__getattr__(),__getattribute__(), or__setattr__()may be called upon the instance. In case those methods rely on some internal invariant being true, the type should implement__new__()to establish such an invariant, as__init__()is not called when unpickling an instance.
問題の詳細
なお、こちらの箇所では「不変条件」という訳語が使われていました。
https://docs.python.org/ja/3.15/howto/enum.html
メンバーが定義された列挙型のサブクラス化を許可すると、いくつかのデー��型およびインスタンスの重要な不変条件の違反を引き起こします。とはいえ、それが許可されると、列挙型のグループ間での共通の挙動を共有するという利点もあります。 (OrderedEnum の例を参照してください。)
IntEnum をベースとしないため、通常の Enum の不変条件 (他の列挙型と比較できないなど) のままで、メンバーを順序付けできる列挙型です:
原文:
https://docs.python.org/3.15/howto/enum.html
Allowing subclassing of enums that define members would lead to a violation of some important invariants of types and instances. On the other hand, it makes sense to allow sharing some common behavior between a group of enumerations. (See OrderedEnum for an example.)
An ordered enumeration that is not based on IntEnum and so maintains the normal Enum invariants (such as not being comparable to other enumerations):
修正案
注釈 非 pickle 化に際しては、
__getattr__(),__getattribute__(), または__setattr__()といったメソッドがインスタンスに対して呼ばれることがあります。これらのメソッドが何らかの内部的な不変条件が成り立つことに依存する場合、その型は__new__()メソッドを実装してそのような不変条件が成り立つようにすべきです。なぜならばインスタンスの非 pickle 化においては__init__()メソッドは呼ばれないからです。