newb question about @property
On Thu, 5 Oct 2017 09:08 am, bartc wrote:
> And when I tried, it didn't really work in Python 2 (extra attributes
> could still be created, and .__slots__ wasn't readonly); only Py3.
Not quite, but I don't blame you for the mistake. Its an easy one to make.
__slots__ only works in "new style classes", not "classic classes" in Python
2. And yes, it is a wart in Python 2 that there are two subtly different
kinds of class. This is due to historical reasons, and its fixed in Python 3.
In Python 2, "classic classes" are declared like this:
(or by inheriting from another classic class).
New-style classes, or "types", inherit from object:
(or some other new-style type, like int, dict, list, etc.)
Yes yes yes, I completely agree that this is a suboptimal situation. It is a
language wart and a trap for the beginner, or even the experienced coder. Use
Python 3, where it is fixed.
?Cheer up,? they said, ?things could be worse.? So I cheered up, and sure
enough, things got worse.