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 <steve@pearwood.info> wrote:
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)