Python @property装饰器的用法,判断函数参数整形、字符串、取值范围
如果我们对所赋的值有一定的限制,比如要求名字必须是字符串,年龄必须是数字,否则会对方法的调用造成影响,这个时候单纯的赋值就不能满足这样的过滤效果了。既然是条件过滤,那么这几条代码就需要放在方法里,所以就有了setName(),getName()这样的方法,在set方法里做条件限制,使用的时候是这样的:
p1 = People('张三', 22)
p1.set('李四')
print(p1.getName())
这样其实已经可以了,很满足功能需要。而用@property是让这个更简洁,既保持直接对属性赋值的方便,又对条件做了限制:
实例:
# -*- coding: UTF-8 -*-class People(object):def __init__(self, name, age):self.name = nameself.age = age@propertydef name(self):a = self._name#返回前还可以对数据做处理,比如格式化等return a@name.setterdef name(self,value):#在赋值之前添加判断if not isinstance(value, str):# 抛出异常raise TypeError('People object.name,name must be a str!')self._name = value#调用的时候仍然是方便快捷的直接赋值:
p1 = People('张三', 22)
#p1.name=111
p1.name = '李四'
print(p1.name)
Python @property装饰器的用法,判断函数参数整形、字符串、取值范围相关推荐
- python装饰器 property_介绍Python的@property装饰器的用法
在绑定属性时,如果我们直接把属性暴露出去,虽然写起来很简单,但是,没办法检查参数,导致可以把成绩随便改: s = Student() s.score = 9999 这显然不合逻辑.为了限制score的 ...
- 介绍Python的@property装饰器的用法_python_脚本之家
介绍Python的@property装饰器的用法_python_脚本之家 在绑定属性时,如果我们直接把属性暴露出去,虽然写起来很简单,但是,没办法检查参数,导致可以把成绩随便改: s = Studen ...
- pythonproperty装饰器_实例讲解Python编程中@property装饰器的用法
取值和赋值 class Actress(): def __init__(self): self.name = 'TianXin' self.age = 5 类Actress中有两个成员变量name和a ...
- Python @property装饰器详解
之前的文章中,我们探究了@后接某个自定义函数的用法,实际上,更常见.完备.简单的应用在于对@和python内置的函数进行结合:这可以避免造轮子的行为. 我们知道, Python 内置了3种函数装饰器, ...
- Python使用装饰器和线程限制函数执行时间的方法
前言: (不想看废话的可以直接copy尾部的代码)在八月上旬的时候,曾经写过一个多线程爬虫.程序在运行时经常莫名的卡死.这令我很是费解,后来才发现,是在请求对方资源时,服务器长时间未返回完数据.导 ...
- python property装饰器原理,Python @property装饰器不起作用
Could anyone find a problem with this @property decorator? I cannot seem to get it to assert correct ...
- python中的json函数_python中装饰器、内置函数、json的详解
装饰器 装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象. 先看简单例子: def run(): time.sleep(1 ...
- [转载] python中@property装饰器
参考链接: Python @property装饰器 Python中有一个被称为属性函数(property)的小概念,它可以做一些有用的事情.在这篇文章中,我们将看到如何能做以下几点: 将类方法转换为只 ...
- [转载] python学习笔记——@property装饰器
参考链接: Python @property装饰器 上篇:https://blog.csdn.net/qq_42489308/article/details/89423412 @property装饰器 ...
最新文章
- 清华张学工团队入选“人类细胞图谱计划”首批项目
- hdu 5569(二维dp,水题)
- 牛客题霸 [连续子数组的最大和] C++题解/答案
- jQuery Raty星级评分插件使用方法
- php脚本超时 结束执行代码
- Linux进阶之路————scp指令介绍与演示
- 程序内购买 图文攻略
- flutter加载本地图片
- python spark教程菜鸟教程_菜鸟教程hadoop-hadoop入门教程
- Postman如何设置为中文
- 学习理论-PAC理论
- Python Numpy数组的降序排列 由大到小
- 1.第一节课,从头开始学C语言
- .Net Framework 4安装失败,提示RGB9RAST_x86.msi或者Windows6.0-KB956250-v6001-x86.msu
- 基于javaweb的私人牙科诊所病历管理系统(java+jsp+css+javascript+mysql)
- 美可汗学院因用户基数过小决定移除其在Windows上的软件
- 《计算机应用文摘2014年》更新至12月下
- Linux下log详解
- MySQL8.0导入数据
- 安装支持cuda的OpenCV过程记录
热门文章
- PS(留学动机)的妙用——扭转你的劣势
- 解决关于M1芯片版Mac外接U盘、移动固态硬盘发热问题
- java数据结构_概述Java中的数据结构是什么及其内部实现原理
- 原有磁盘上创建lvm_Linux 系统管理及服务配置实战-第12章 磁盘管理3(连载)
- 第十二届 蓝桥杯 青少年C++组 10月比赛 第1题
- c语言如何查看内置函数,C中函数内部的函数
- Web前端笔记-HTML加载SVG图片及简单修改
- Java笔记-对称加密AES的使用
- Qt开启本地事件循环(防止界面卡阻塞【卡死】)QEventLoop 的基本使用
- 4.3.2模拟匹配的一种改价算法(KMP及KMP优化算法)