Python - 让实例属性不可变(只读)

>>> class A:
...     def __init__(self,name):
...             self.__name = name
...
>>> a = A('xiaoming')
>>> a.name   # 私有化,外部不能直接访问
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'A' object has no attribute 'name'
>>> a.name = 'wangfu'     # 为实例a 增加了一个新的公开name属性
>>> a.name
'wangfu'
>>> a.__dict__
{'_A__name': 'xiaoming', 'name': 'wangfu'}
>>> class B:
...     def __init__(self,name):
...             self.__name = name
...     @property   # 提供访问  
...     def name(self):
...             return self.__name
...
>>> b = B('张三')
>>> b.name
'张三'
>>> b.name = '李四'    # 因为没有@property.set 修饰的同名函数, 所以报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: can't set attribute
>>> b.age = 18   
>>> b.age
18
posted @   chuangzhou  阅读(88)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示