像java 、Scala语言都有lombok可以快速的创建getter setter 。
那么在python中该如何编写呢 ,带着这个问题 我在influxdb-client官方源包中发现了这种写法。
思路是 在 init 构建方法中 设置属性值,用@property 装饰器 同名的 get方法,用@属性名.setter 装饰器装饰 setter 的方法。
并在方法内可以做该方法的初始化判断之类的操作。
所以 根据这个方法,我们可以创建自己的class,比如创建一个 学生类(姓名和分数),对分数字段做类型限制。
class Student:
def __init__(self, name, score):
self.name = "Student"
self.score = score
@property
def score(self):
return self._score
@score.setter
def score(self, value):
if not isinstance(value, int):
raise ValueError("score must be an integer!")
if value < 0 or value > 100:
raise ValueError("score must between 0 ~ 100!")
self._score = value
isinstance 类似 java中的instance of 方法 ,都是内置方法 来判断类型。