我想知道 OOP 中的类状态是什么意思,特别是在 Python 中

Dau*_*med 4 python oop

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

bru*_*ers 6

一般面向对象的答案:对象的状态是其属性的值。例如,给定

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

静态方法既不获取实例也不获取类,因此它实际上既不能改变类也不能改变实例的状态。