Skip to main content

Python 属性访问控制

大家好!今天我们来聊聊Python的属性访问控制。 这个例子定义了一个MyClass数据类, 使用dataclass简化了类的定义。 _my_attr是一个受保护的属性, 使用单下划线开头是一种约定, 表示不应该在外部直接访问。 使用@property装饰器可以创建属性, 并定义getter方法。 使用@my_attr.setter装饰器可以创建setter方法。 这里值得提一下的是,类型提示(Type annotation)增加了代码的可读性。 希望这个简单的例子能帮助你理解Python的属性访问控制!

代码示例

from dataclasses import dataclass

@dataclass
class MyClass:
_my_attr: int = 0

@property
def my_attr(self) -> int:
return self._my_attr

@my_attr.setter
def my_attr(self, value: int) -> None:
if value < 0:
raise ValueError(
"Value must be non-negative"
)
self._my_attr = value

obj = MyClass()
obj.my_attr = 10
print(obj.my_attr)