我想知道OOP中的类状态(尤其是Python)是什么意思

时间:2020-03-09 15:46:57

标签: python oop

今天,有人问我有关静态方法的问题,说静态方法不能访问或修改类状态是对的吗?

1 个答案:

答案 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具有可以在实例或类本身上调用的“类方法”,但可以获取类对象本身而不是实例。然后,这些类方法可以修改类的状态(类属性,该属性由该类的所有实例共享)。

静态方法既不会获取实例也不会获取类,因此它无法更改类或实例的状态。