在Python中访问变量时运行代码

2024-10-01 02:20:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个班上的人。如果在Person.siting==True时访问其running_speed变量,则它必须抛出SittingError

class SittingError(Exception):
    pass

class Person:
    def __init__(self):
        self.sitting = False
        self.running_speed = 4

bob = Person()
print(bob.running_speed) # Works fine, he's not sitting
bob.sitting = True
print(bob.running_speed) # Throws SittingError, as running_speed was accessed while sitting

我如何做到这一点


Tags: selftrueinitdefexceptionpassrunningclass
1条回答
网友
1楼 · 发布于 2024-10-01 02:20:24

您可以使用@property修饰符,并在sitting == true时在getter中引发异常

class SittingError(Exception):
    pass

class Person:
    def __init__(self):
        self.sitting = False
        self._running_speed = 4

    @property
    def running_speed(self):
        if self.sitting:
            raise SittingError()
        return self._running_speed

    @running_speed.setter
    def running_speed(self, speed):
        self._running_speed = speed

bob = Person()
print(bob.running_speed) # Works fine, he's not sitting
bob.sitting = True
print(bob.running_speed)

相关问题 更多 >