| ▲ | pansa2 2 days ago | ||||||||||||||||||||||||||||||||||||||||
> ImmutableFoo as a subclass of Foo is never going to work. And, indeed, `set` and `frozenset` don't have an inheritance relationship. Theoretically, could `set` be a subclass of `frozenset` (and `dict` of `frozendict`)? Do other languages take that approach? > linking [immutability] more explicitly to hashability AFAIK immutability and hashability are equivalent for the language's "core" types. Would it be possible to enforce that equivalence for user-defined types, given that mutability and the implementation of `__hash__` are entirely controlled by the programmer? | |||||||||||||||||||||||||||||||||||||||||
| ▲ | kccqzy 2 days ago | parent | next [-] | ||||||||||||||||||||||||||||||||||||||||
Yes you could. Other languages do. See NSMutableSet and NSSet in Objective-C. | |||||||||||||||||||||||||||||||||||||||||
| ▲ | chriswarbo 2 days ago | parent | prev [-] | ||||||||||||||||||||||||||||||||||||||||
> Theoretically, could `set` be a subclass of `frozenset` (and `dict` of `frozendict`)? At one extreme: sure, anything can be made a subclass of anything else, if we wanted to. At the other extreme: no, since Liskov substitution is an impossibly-high bar to reach; especially in a language that's as dynamic/loose as Python. For example, consider an expression like '"pop" in dir(mySet)' | |||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||