Python中property属性的作用是什么


本篇内容主要讲解“Python中property属性的作用是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python中property属性的作用是什么”吧!Python 动态属性的概念可能会被面试问到,在项目当中也非常实用,但是在一般的编程教程中不会提到,可以进修一下。先看一个简单的例子。创建一个 Student 类,我希望通过实例来获取每个学生的一些情况,包括名字,成绩等。成绩只有等到考试结束以后才会有,所以实例化的时候不会给它赋值。考试完以后,准备给 mike 打分:在这里,老师一不小心多打了个 9 ,通常来说打分都是 100 分值,999 是一个非法数据,不应该赋值成功。学生一多,老师打分出现手误的情况肯定会越来越多,所以我们必须想办法修改程序,限制 score 的值必须在 0-100 分。我们定义一个方法,如果输入的不是 0-100 的整数,就让程序报错,数据合法,我们就把 score 属性修改成功。这样我们每次需要获取成绩的时候使用 self.score 获取,修改成绩的时候调用函数来修改:调用以后会报错,因为 999 是非法数据。注意,这个时候我使用 self.score 还是可以进行设置,而且不报错:这显然是不行的。所以我们要提供一种机制,把 score 变成私有属性,不能让外部访问。很遗憾,python 的私有属性是伪私有。通常我们把 _ 开头的属性叫私有属性,但是这只是一种协议和规定,你看到下划线开头的属性,不要去访问了。你硬要访问,是可以的,python 并不会禁止。上面的方法虽然实现了功能,但是改变了属性的使用方式。平常是这样使用的:统一了调用方式。self.score = 99 的方式,而不是函数调用的方式。_score 我们就不直接去使用了。你要用也可以,不建议。如果我们一个属性只可以读,把 setter 部分注释掉就可以了。现在我们来完善这个类,添加 birth 属性和年龄属性:birth 和 age 这两个免费云主机域名是可以根据一个求出另外一个的。存在数据冗余问题。age 属性这样是有问题的。mike 初始化的时候,age 已经被求出来了,如果我在下一年再去访问 age 属性,那他就是个错误的值。可以通过把 age 设成现在的秒数来验证:注意,这里不要去设置 @age.setter ,因为他是动态变化的,你修改了会造成数据不一致,它只能作为一个只读属性。@property 作用和应用场景:@property 优化了属性读取和设置的可读性需要限制属性的特征;只读属性。如果属性只可以读,不可以写,用起来很方便。这个属性根据一个变化的环境动态改变。用property代替getter和setter到此,相信大家对“Python中property属性的作用是什么”有了更深的了解,不妨来实际操作一番吧!这里是百云主机网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

相关推荐: web常用数据结构及复杂度实例分析

这篇文章主要介绍“web常用数据结构及复杂度实例分析”,在日常操作中,相信很多人在web常用数据结构及复杂度实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”web常用数据结构及复杂度实例分析”的疑惑有所帮助!接下来,请跟着…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 04/12 16:17
下一篇 04/12 16:17

相关推荐