我知道静态变量适用于对象,实例变量(通常在 __init__(( 函数下(适用于实例,但我想到了一个问题:
在游戏中何时何地应使用静态变量和实例变量?此外,如果更改对象的静态变量的值,它是否适用于该对象的所有实例?
如果属性对于实例是唯一的(大多数情况下都是这种情况(,则应使用实例属性。如果应在所有实例之间共享属性,则可以使用类属性,例如,如果要存储与此类相关的常量。我想到的一个例子是实体(有限状态机(的状态:
from enum import Enum
class Entity:
# The instances don't need their own `states` enumeration,
# so I create one which will be shared among all instances.
STATES = Enum('State', 'IDLING WALKING JUMPING')
def __init__(self):
self.state = self.STATES.JUMPING
def update(self):
if self.state is self.STATES.JUMPING:
print('jumping')
entity = Entity()
entity.update()
请注意可变类属性,因为当您修改它们时,您就会为所有实例修改它们。