如果我们对所赋的值有一定的限制,比如要求名字必须是字符串,年龄必须是数字,否则会对方法的调用造成影响,这个时候单纯的赋值就不能满足这样的过滤效果了。既然是条件过滤,那么这几条代码就需要放在方法里,所以就有了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装饰器的用法,判断函数参数整形、字符串、取值范围相关推荐

  1. python装饰器 property_介绍Python的@property装饰器的用法

    在绑定属性时,如果我们直接把属性暴露出去,虽然写起来很简单,但是,没办法检查参数,导致可以把成绩随便改: s = Student() s.score = 9999 这显然不合逻辑.为了限制score的 ...

  2. 介绍Python的@property装饰器的用法_python_脚本之家

    介绍Python的@property装饰器的用法_python_脚本之家 在绑定属性时,如果我们直接把属性暴露出去,虽然写起来很简单,但是,没办法检查参数,导致可以把成绩随便改: s = Studen ...

  3. pythonproperty装饰器_实例讲解Python编程中@property装饰器的用法

    取值和赋值 class Actress(): def __init__(self): self.name = 'TianXin' self.age = 5 类Actress中有两个成员变量name和a ...

  4. Python @property装饰器详解

    之前的文章中,我们探究了@后接某个自定义函数的用法,实际上,更常见.完备.简单的应用在于对@和python内置的函数进行结合:这可以避免造轮子的行为. 我们知道, Python 内置了3种函数装饰器, ...

  5. Python使用装饰器和线程限制函数执行时间的方法

    前言:   (不想看废话的可以直接copy尾部的代码)在八月上旬的时候,曾经写过一个多线程爬虫.程序在运行时经常莫名的卡死.这令我很是费解,后来才发现,是在请求对方资源时,服务器长时间未返回完数据.导 ...

  6. python property装饰器原理,Python @property装饰器不起作用

    Could anyone find a problem with this @property decorator? I cannot seem to get it to assert correct ...

  7. python中的json函数_python中装饰器、内置函数、json的详解

    装饰器 装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象. 先看简单例子: def run(): time.sleep(1 ...

  8. [转载] python中@property装饰器

    参考链接: Python @property装饰器 Python中有一个被称为属性函数(property)的小概念,它可以做一些有用的事情.在这篇文章中,我们将看到如何能做以下几点: 将类方法转换为只 ...

  9. [转载] python学习笔记——@property装饰器

    参考链接: Python @property装饰器 上篇:https://blog.csdn.net/qq_42489308/article/details/89423412 @property装饰器 ...

最新文章

  1. 清华张学工团队入选“人类细胞图谱计划”首批项目
  2. hdu 5569(二维dp,水题)
  3. 牛客题霸 [连续子数组的最大和] C++题解/答案
  4. jQuery Raty星级评分插件使用方法
  5. php脚本超时 结束执行代码
  6. Linux进阶之路————scp指令介绍与演示
  7. 程序内购买 图文攻略
  8. flutter加载本地图片
  9. python spark教程菜鸟教程_菜鸟教程hadoop-hadoop入门教程
  10. Postman如何设置为中文
  11. 学习理论-PAC理论
  12. Python Numpy数组的降序排列 由大到小
  13. 1.第一节课,从头开始学C语言
  14. .Net Framework 4安装失败,提示RGB9RAST_x86.msi或者Windows6.0-KB956250-v6001-x86.msu
  15. 基于javaweb的私人牙科诊所病历管理系统(java+jsp+css+javascript+mysql)
  16. 美可汗学院因用户基数过小决定移除其在Windows上的软件
  17. 《计算机应用文摘2014年》更新至12月下
  18. Linux下log详解
  19. MySQL8.0导入数据
  20. 安装支持cuda的OpenCV过程记录

热门文章

  1. PS(留学动机)的妙用——扭转你的劣势
  2. 解决关于M1芯片版Mac外接U盘、移动固态硬盘发热问题
  3. java数据结构_概述Java中的数据结构是什么及其内部实现原理
  4. 原有磁盘上创建lvm_Linux 系统管理及服务配置实战-第12章 磁盘管理3(连载)
  5. 第十二届 蓝桥杯 青少年C++组 10月比赛 第1题
  6. c语言如何查看内置函数,C中函数内部的函数
  7. Web前端笔记-HTML加载SVG图片及简单修改
  8. Java笔记-对称加密AES的使用
  9. Qt开启本地事件循环(防止界面卡阻塞【卡死】)QEventLoop 的基本使用
  10. 4.3.2模拟匹配的一种改价算法(KMP及KMP优化算法)