如何在Python中实现类似C#自定义属性setter,设置age自动更新description?
Python实现C#风格的属性访问器(自动同步属性)
在Python中,可以通过@property装饰器实现类似C#的get/set访问器效果,无需手动编写get_age、set_age这类函数。以下是适配你需求的实现方式:
改造后的Record类
class Record(object): def __init__(self): # 用单下划线标记内部变量(Python约定的私有变量写法) self._age = 0 self.description = "" # 其他属性的初始化代码... @property def age(self): # 对应C#的get访问器 return self._age @age.setter def age(self, value): # 对应C#的set访问器,赋值时自动同步description self._age = value self.description = "new" if self._age < 1500 else "old"
使用示例
# 创建实例 record = Record() # 设置age属性,自动更新description record.age = 1200 print(record.description) # 输出: new record.age = 1600 print(record.description) # 输出: old
关键说明
- Python用
@property定义属性的getter方法,用@属性名.setter定义setter方法,语法上可以直接像访问普通属性一样操作age _age是实例内部变量,遵循Python命名约定(单下划线表示仅供内部使用,类似C#的private字段)- 所有逻辑都封装在setter方法中,设置
age时会自动执行同步description的逻辑,和C#的属性行为完全一致
内容的提问来源于stack exchange,提问作者isswf
相关产品推荐
相关产品推荐

