Python基础语法:访问器@property和修改器@xxx.setter
·
一、简介
负责把一个方法当做属性进行使用,这样做可以简化代码使用。
访问器和修改器也是装饰器的一种。
@property: 访问器,getter,简化方法的调用。
@获取值的函数名.setter: 修改器,setter,对于重要字段做一些校验。
访问器和修改器的根本目的是想将属性私有化,提供getter&setter去访问。
访问器和修改器能够做到访问属性其实在调用getter方法,设置属性其实在调用setter方法。
Java的规范都是不直接操作属性,而是调用getter和setter方法。
Python做到了直接操作属性来间接调用getter&setter。
二、示例
使用了访问器和修改器后一般方法名都写为属性名。
class Person:
def __init__(self, name, age):
self._name = name
self._age = age
@property
def name(self):
print('@property name')
return self._name
@name.setter
def name(self, name):
print('@name.setter')
self._name = name
@property
def age(self):
print('@property age')
return self._age
@age.setter
def age(self, age):
print('@age.setter')
self._age = age
def show(self):
print(f'{self._name} {self._age}')
if __name__ == '__main__':
person = Person('张三', 30)
# @property name
# 张三
print(person.name)
# @property age
# 30
print(person.age)
# 张三 30
person.show()
# @name.setter
person.name = '张三丰'
# @age.setter
person.age = 35
# 张三丰 35
person.show()
三、类属性方式
property属性 = property(获取值方法,设置值方法)
class Person:
def __init__(self):
self.__age = 18
def get_age(self):
return self.__age
def set_age(self, age):
self.__age = age
age = property(get_age, set_age)
p = Person()
p.age = 20
print(p.age)
更多推荐


所有评论(0)