[六、调用父类方法](八、调用父类方法.md)>[success] # ~~~ 1.对无参数,只有返回的类方法加 @property 等同于getter,给属性赋值,通常对这个属性进行逻辑操作使用 2.对使用@property 进行setter 赋值操作的时候,方法名要和property 一致,然后加上 @.setter 3.对使用@property 进行delete 操作的时候,方法名要和property 一致,然后加上 @.deleter 4.python中不推荐像java 要把每一个属性进行封装 ~~~ >[danger] ##### 操作案例 ~~~ class Person: def __init__(self, first_name): self.first_name = first_name # Getter function @property def first_name(self): return self._first_name # Setter function @first_name.setter def first_name(self, value): if not isinstance(value, str): raise TypeError('Expected a string') self._first_name = value # Deleter function (optional) @first_name. deleter def first_name(self): raise AttributeError("Can't delete attribute") p = Person("w") # setter 赋值操作 p.first_name = "3" # getter -- property操作 print(p.first_name) # 删除操作 del a.first_name ~~~ * 上面的也可以直接用python 定义有意义方法名实现 ~~~ 1.在初始换的时候使用定义好的set_first_name 方法,将变量赋值 2.用property 函数对应的参数分别是get,set,del 传入 3.使用的时候,用property 返回值 例如下面的案例p.name ~~~ ~~~ class Person: def __init__(self, first_name): self.set_first_name(first_name) # Getter function def get_first_name(self): return self._first_name # Setter function def set_first_name(self, value): if not isinstance(value, str): raise TypeError('Expected a string') self._first_name = value # Deleter function (optional) def del_first_name(self): raise AttributeError("Can't delete attribute") # Make a property from existing get/set methods name = property(get_first_name, set_first_name, del_first_name) p = Person("w") # setter 赋值操作 # getter -- property操作 print(p.name) ~~~