Pygame:静态变量和实例变量

Pygame: static variables and instance variables

我知道静态变量适用于对象,实例变量(通常在 __init__() 函数下)适用于实例,但我想到了一个问题:

静态变量和实例变量应该在游戏中何时何地使用?此外,如果您更改对象的静态变量的值,它是否适用于该对象的所有实例?

如果属性对于实例是唯一的(大多数情况下都是这种情况),则应使用实例属性。 Class 如果属性应该在所有实例之间共享,则可以使用 Class 属性,例如,如果你想存储与此 class 相关的常量。我想到的一个例子是实体的状态(有限状态机):

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()

注意可变 class 属性,因为当您修改它们时,您会为所有实例修改它们。