DAY 4. class variables (attributes) and instance variables (attributes)
- Class variables: between instances of all classes can share variables, class variables to retain only one copy of all the objects in the room
- Defined in the class body
- All instances of object classes can access class variables
- Class variables can only be modified by the class, instance object only read access
- Use
对象名.类变量名 = new value
is not in use to modify the object class attribute, but to add a new property objects
class Demo:
# 类变量
classVar = 0
def __init__(self):
self.instanceVar = 1
if __name__ == '__main__':
demo1 = Demo()
demo2 = Demo()
# 类的所有实例对象都可以访问类变量
print(demo1.classVar) # 0
print(demo2.classVar) # 0
# 由类修改类变量
Demo.classVar = 2
print(demo1.classVar) # 2
print(demo2.classVar) # 2
# 注意,这样不是在修改类变量,而是给实例对象添加了一个属性
demo1.classVar = 2
print(demo1.classVar) # 2
- Instance variables: when instantiating objects, each will have its own instance variables, instance variables do not affect between
- Defined in the constructor
- Modify instance variables of the object instance, class instance variables did not modify the meaning of
- Each instance of an object has instance variables
class Demo:
# 类变量
classVar = 0
def __init__(self):
# 实例变量
self.instanceVar = 1
if __name__ == '__main__':
print(demo1.instanceVar) # 1
print(demo2.instanceVar) # 1
# 各实例对象间的实例变量互相不影响
demo1.instanceVar = 2
print(demo1.instanceVar) # 2
print(demo2.instanceVar) # 1
# 用类修改实例变量没意义
Demo.instanceVar = 2
print(demo1.instanceVar) # 2
print(demo2.instanceVar) # 1
4.1 summary
Variable (attribute) | definition | Read | modify | RAM |
---|---|---|---|---|
Class variables | Defined in the class body | className.classVar withobjectName.classVar |
className.classVar = new value |
Just keep a copy |
Instance variables | Defined in the constructor | objectName.instanceVar |
objectName.instanceVar = new value |
Each instance of an object holds, among the objects independently of each other |
** Note: ** Use
objectName.classVar = new value
is subject to add a new property
Reference article:
GitHub face questions about python
Python (classes and objects of the class variables and class attributes)
Part V illustrates Python []: Object-oriented - Class - Primary Basics