摘要:本文主要向大家介绍了Python语言之python 面向对象七 property() 函数和@property 装饰符,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。
本文主要向大家介绍了Python语言之python 面向对象七 property() 函数和@property 装饰符,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。
一、property引入
为了使对象的属性不暴露给调用者和进行属性值检查,设置了访问属性的接口函数,使用函数访问属性,并可以在函数内部检查属性。
1 >>> class Student(object):
2 def get_score(self):
3 return self._score
4 def set_score(self, value):
5 if not isinstance(value, int):
6 raise ValueError('score must be an integer!')
7 if value < 0 or value > 100:
8 raise ValueError('score must between 0 ~ 100!')
9 self._score = value
10
11
12 >>> s = Student()
13 >>> s.set_score(10)
14 >>> s.get_score()
15 10
这样每次访问属性的时候,都要访问函数,相比较之前直接访问属性的方式,变得麻烦了。property可以解决这个麻烦,虽然还是函数,但是可以像属性一样访问。
二、property装饰器方法:
>>> class C:
def __init__(self):
self.__x = None
@property
def x(self):
return self.__x
@x.setter
def x(self,value):
self.__x=value
@x.deleter
def x(self):
del self.__x
>>> c = C()
>>> c.x
>>> c.x = 100
>>> c.x
100
三、property函数方法:
>>> class C:
def __init__(self):
self.__x = None
def getx(self):
return self.__x
def setx(self, value):
self.__x = value
def delx(self):
del self.__x
x = property(fget=getx,fset=setx,fdel=delx, doc='')
>>> c = C()
>>> c.x = 100
>>> c.x
100
>>> del c.x
>>> c.x
Traceback (most recent call last):
File "
c.x
File "
return self.__x
AttributeError: 'C' object has no attribute '_C__x'
本文由职坐标整理并发布,希望对同学们学习Python有所帮助,更多内容请关注职坐标编程语言Python频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号