9

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

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

该变量empCount是一个类变量,其值将在此类的所有实例之间共享。这可以 Employee.empCount从类内部或类外部访问。

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

这是技术上的好习惯吗?我知道这个问题有点软,但一般来说,什么时候有一个像 self.var 这样的类变量(在 init 或其他东西中声明)和像这样的公共变量更好?

4

2 回答 2

7

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

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

于 2013-05-12T17:46:40.330 回答
2

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

于 2013-05-12T17:45:26.223 回答