避免重复的属性方法-华为云大数据中台架构分享

时间:2024-07-01 05:00:47
【文件属性】:

文件名称:避免重复的属性方法-华为云大数据中台架构分享

文件大小:5.68MB

文件格式:PDF

更新时间:2024-07-01 05:00:47

Python cookbook 中文 参考

9.21 避免重复的属性方法 问题 你在类中需要重复的定义一些执行相同逻辑的属性方法,比如进行类型检查, 怎样去简化这些重复代码呢? 解决方案 考虑下一个简单的类,它的属性由属性方法包装: class Person: def __init__(self, name ,age): self.name = name self.age = age @property def name(self): return self._name @name.setter def name(self, value): if not isinstance(value, str): raise TypeError('name must be a string') self._name = value @property def age(self): return self._age @age.setter def age(self, value): if not isinstance(value, int): raise TypeError('age must be an int') self._age = value 可以看到,为了实现属性值的类型检查我们写了很多的重复代码。 只要你以后 看到类似这样的代码,你都应该想办法去简化它。 一个可行的方法是创建一个 函数用来定义属性并返回它。例如: def typed_property(name, expected_type): storage_name = '_' + name @property def prop(self): return getattr(self, storage_name) @prop.setter


网友评论