一般面向对象的答案:对象的状态是其属性的值。例如,给定
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
p = Point(42, 43)
Run Code Online (Sandbox Code Playgroud)
那么状态p是{"x": 42, "y": 43}
要修改对象的状态,方法需要有权访问该对象。对于普通方法,这是由self参数提供的。
现在Python的类也是对象(类的实例type),所以Python有“classmethods”,它可以在实例或类本身上调用,但获取类对象本身而不是实例。然后,这些类方法可以修改类的状态(类属性,由类的所有实例共享)。
静态方法既不获取实例也不获取类,因此它实际上既不能改变类也不能改变实例的状态。