我现在正在学习Python课程,并且遇到了这个页面:
http://www.tutorialspoint.com/python/python_classes_objects.htm
变量
empCount
是一个类变量,其值为 在这个类的所有实例之间共享。这可以作为访问 来自课堂内部或课堂外的Employee.empCount
。
我假设这被称为公共变量?还是一个静态公共变量?
这在技术上是好的做法吗?我知道这个问题有点软,但一般来说,如果有一个像self.var这样的类变量(在init或其他东西中声明)与这样的公共变量相比更好吗?
答案 0 :(得分:6)
它被称为类属性。 Python不区分公共和私有;隐私只能按惯例表示,不会强制执行。
如果您需要在实例之间共享数据,那么这是技术上的好习惯。请记住,方法也是类属性!
答案 1 :(得分:1)
不同之处在于,如果变量是在__init__
构造函数内声明的,则变量对于不同的类变量是不同的。 (即)如果该类有两个对象,则每个对象具有不同的内存空间。如果它被声明为此empcount
,则该类的所有对象共享或访问相同的内存空间。在这种情况下,创建的每个对象都会将empcount的值增加1.因此,当要由所有对象共享变量时,请使用此类静态声明。但是更改此变量会影响该类的所有对象。