今天,有人问我有关静态方法的问题,说静态方法不能访问或修改类状态是对的吗?
答案 0 :(得分:0)
一般的OO回答:对象的状态是其属性的值。例如,给定
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
p = Point(42, 43)
则p
的状态为{"x": 42, "y": 43}
要修改对象的状态,方法需要有权访问该对象。对于普通方法,此参数由self
参数提供。
现在Python的类也是对象(type
类的实例),因此Python具有可以在实例或类本身上调用的“类方法”,但可以获取类对象本身而不是实例。然后,这些类方法可以修改类的状态(类属性,该属性由该类的所有实例共享)。
静态方法既不会获取实例也不会获取类,因此它无法更改类或实例的状态。