On Mon, May 28, 2018 at 4:22 PM, Simon King <simon.k...@uni-jena.de> wrote:
> Hi Erik
>
> On 2018-05-28, Erik Bray <erik.m.b...@gmail.com> wrote:
>> I think Sage could use a better way to keep
>> track of and/or enforce immutability of classes (that is, instances of
>> classes).  For example, have some base class which can be used as a
>> mix-in (or an ABC) that designates something as immutable, and
>> disallow assigning any attributes to its dict that aren't also
>> immutable (including of course support for all the common built-in
>> types).
>
> I don't think this could possibly work. But actually that's not a Sage
> problem but a Python problem: Perhaps somewhere in the Python ecosystem
> such a mix-in class exists?
>
> However, I find your notion of immutability ("do not allow assigning
> attributes and make all existing attributes immutable") far too narrow.
> IIRC, immutable means that once the object is created, its equivalence
> class with respect to the "==" operator will be preserved no matter what
> of its (no-underscore?) methods are called.
>
> Thus, I believe it must be allowed to assign to an attribute of object X,
> as long as the behaviour of X==Y remains unchanged for all objects Y
> (and of course hash(X) doesn't change either).

To be clear, I'm not even talking about *enforcing* immutability; in
Python that is impossible.  I'm just talking about bookkeeping
indicating that objects of a class should be considered immutable, and
this fact discoverable through introspection (possibly with a small
amount of intelligence where possible, but certainly not guaranteeing
protection from programmer error).

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to