It's "class variable" because we (at least I) also routinely use "instance
variable".
On Tue, May 16, 2017 at 4:23 PM, Steven D'Aprano
Since PEP 526 is already provisionally accepted, it may be too late to bring this up, but I have a question and suggestion about the name ClassVar. I've read the PEP but didn't see an answer or rejection to this.
https://www.python.org/dev/peps/pep-0526/
Why choose ClassVar over ClassAttr when the usual terminology used in the Python community is class and instance *attributes* rather than "variables"?
I understand that, in a sense, attributes are variables (unless they're constants *wink*) but the term "class variable" sounds very Java-esque rather than Pythonic. And it is an uncomfortable fit with a language like Python where classes are first class values like ints, strings, floats etc:
- we talk about a string variable meaning a variable holding a string; - a float variable is a variable holding a float; - a list variable is a variable holding a list; - so a class variable ought to be a variable holding a class.
I get the intention: we have local, global, instance and class variables. But I feel that grouping instance/class with local/global is too abstract and "computer sciencey": in practice, instance/class vars are used in ways which are different enough from global/local vars that they deserve a different name: attributes, members or properties are common choices.
(Python of course uses attributes, and properties for a particular kind of computed attribute.)
This introduces split terminology: we now talk about annotating class attributes with ClassVar. Since there's no GlobalVar, NonLocalVar or LocalVar, there doesn't seem to be any good reason to stick with the FooVar naming system.
Can we change the annotation to ClassAttr instead?
-- Steve _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/
-- --Guido van Rossum (python.org/~guido)