Public variables in Python classes?

2019-06-18 05:28发布

I am learning Python classes on my own right now and came across this page:

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

The variable empCount is a class variable whose value would be shared among all instances of a this class. This can be accessed as Employee.empCount from inside the class or outside the class.

I'm assuming this is called a public variable? Or a static public variable?

Is this technically good practice? I know this question is a bit soft, but generally speaking when is it better to have a class variable like self.var (declared in the init or something) vs. a public variable like this?

2条回答
放荡不羁爱自由
2楼-- · 2019-06-18 05:55

The difference is, if the variable is declared inside the __init__ constructor, the variable stands different for different class variables. (i.e) If there are two objects for the class, each have a different memory space for this variable. If it is declared like this empcount, the same memory space is shared or accessed by all the objects of the class. In this case, each object created increases the value of empcount by 1. So when a variable is to be shared by all objects , use this kind of static declaration. But change to this variable affects all the objects of the class.

查看更多
Root(大扎)
3楼-- · 2019-06-18 05:56

It is called a class attribute. Python doesn't distinguish between public and private; privacy is only indicated by convention, and is not enforced.

It is technically good practice if you need to share data among instances. Remember, methods are class attributes too!

查看更多
登录 后发表回答