Python类中的公共变量?

时间:2013-05-12 17:39:23

标签: python class encapsulation

我现在正在学习Python课程,并且遇到了这个页面:

http://www.tutorialspoint.com/python/python_classes_objects.htm

  

变量empCount是一个类变量,其值为   在这个类的所有实例之间共享。这可以作为访问   来自课堂内部或课堂外的Employee.empCount

我假设这被称为公共变量?还是一个静态公共变量?

这在技术上是好的做法吗?我知道这个问题有点软,但一般来说,如果有一个像self.var这样的类变量(在init或其他东西中声明)与这样的公共变量相比更好吗?

2 个答案:

答案 0 :(得分:6)

它被称为类属性。 Python不区分公共和私有;隐私只能按惯例表示,不会强制执行。

如果您需要在实例之间共享数据,那么这是技术上的好习惯。请记住,方法也是类属性!

答案 1 :(得分:1)

不同之处在于,如果变量是在__init__构造函数内声明的,则变量对于不同的类变量是不同的。 (即)如果该类有两个对象,则每个对象具有不同的内存空间。如果它被声明为此empcount,则该类的所有对象共享或访问相同的内存空间。在这种情况下,创建的每个对象都会将empcount的值增加1.因此,当要由所有对象共享变量时,请使用此类静态声明。但是更改此变量会影响该类的所有对象。