1.@Property有啥用

1) @property使方法像属性一样调用

@property可以把一个实例方法变成其同名属性,以支持.号访问,它亦可标记设置限制,加以规范

2) @property成为属性函数,可以对属性赋值时做必要的检查,比如在setter方法里加过滤判断条件。

3) 代码显得相对简洁一些, 相比自定义的get和set方法,property保证了代码的短小精悍,对私有属性的操作代码格式化模块化。

2. @Property原型

property(fget=None, fset=None, fdel=None, doc=None)

3. 用例子来理解:为什么要用@Property

改成下面这样

Python支持高阶函数,可以用装饰器函数把 get/set 方法“装饰”成属性调用:

第一个sala(self)是get方法,用@property装饰,第二个sala(self, sala)是set方法,用@sala.setter装饰,@sala.setter是前一个@property装饰后的副产品。

现在,就可以像使用属性一样设置sala了

4. 用例子来理解:@Property对是私有属性进行操作

看下面

参考:

https://www.cnblogs.com/Lambda721/p/6132206.html

https://blog.csdn.net/qq_26442553/article/details/82222572

http://www.cnblogs.com/crwy/p/6852347.html

https://www.jb51.net/article/134148.htm

Python 今天抽空学习了@Property的更多相关文章

  1. Python Built-in Function 学习笔记

    Python Built-in Function 学习笔记 1. 匿名函数 1.1 什么是匿名函数 python允许使用lambda来创建一个匿名函数,匿名是因为他不需要以标准的方式来声明,比如def ...

  2. Python 装饰器学习

    Python装饰器学习(九步入门)   这是在Python学习小组上介绍的内容,现学现卖.多练习是好的学习方式. 第一步:最简单的函数,准备附加额外功能 1 2 3 4 5 6 7 8 # -*- c ...

  3. Requests:Python HTTP Module学习笔记(一)(转)

    Requests:Python HTTP Module学习笔记(一) 在学习用python写爬虫的时候用到了Requests这个Http网络库,这个库简单好用并且功能强大,完全可以代替python的标 ...

  4. 从Theano到Lasagne:基于Python的深度学习的框架和库

    从Theano到Lasagne:基于Python的深度学习的框架和库 摘要:最近,深度神经网络以“Deep Dreams”形式在网站中如雨后春笋般出现,或是像谷歌研究原创论文中描述的那样:Incept ...

  5. Comprehensive learning path – Data Science in Python深入学习路径-使用python数据中学习

    http://blog.csdn.net/pipisorry/article/details/44245575 关于怎么学习python,并将python用于数据科学.数据分析.机器学习中的一篇非常好 ...

  6. (转载)Python装饰器学习

    转载出处:http://www.cnblogs.com/rhcad/archive/2011/12/21/2295507.html 这是在Python学习小组上介绍的内容,现学现卖.多练习是好的学习方 ...

  7. python网络爬虫学习笔记

    python网络爬虫学习笔记 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章文件夹 1. 介绍: 2. 从简单语句中開始: 3. 传送数据给server 4. HTTP头-描写叙述 ...

  8. Python装饰器学习

    Python装饰器学习(九步入门)   这是在Python学习小组上介绍的内容,现学现卖.多练习是好的学习方式. 第一步:最简单的函数,准备附加额外功能 ? 1 2 3 4 5 6 7 8 # -*- ...

  9. Python的基础学习(第二周)

    模块初始 sys模块 import sys sys.path #打印环境变量 sys.argv#打印该文件路径 #注意:该文件名字不能跟导入模块名字相同 os模块 import os cmd_res ...

随机推荐

  1. BeginInvoke异步线程

    this.BeginInvoke(new Action(() => { dataGridView1.DataSource = BLLBillConsume.BllGetClearMarketLo ...

  2. 【Zookeeper】分布式锁

    一.概述 实现原理 实现代码 一.概述 分布式锁解决方案(目的:为了保证在分布式领域中共享数据安全问题) 数据库实现分布式锁(不推荐.效率特别低) 基于Redis实现分布式锁setNx (非常麻烦考虑 ...

  3. 【SQL server】SQL server基础(二)

    一.一些重要的SQL命令 SELECT - 从数据库中提取数据 UPDATE - 更新数据库中的数据 DELETE - 从数据库中删除数据 INSERT INTO - 向数据库中插入新数据 CREAT ...

  4. es6 知识点总结(模块化 异步)

    问题: 什么是单线程和异步有什么关系? 什么是 event-loop 是否用过 jquery的deferred promise的基本使用和原理 介绍一下 async/await(和Promise 的区 ...

  5. Hibernate初探之单表映射——创建持久化类

    编写第一个Hibernate例子 第二步:创建持久化类(持久化类的设计原则要遵循javabeans的设计原则) javabeans的设计原则: 1.公有的类2.提供公有的不带参数的默认的构造方法3.属 ...

  6. lnmp安装xdebug ,配合phpstorm断点调试

    先下载xdebug wget http://www.xdebug.org/files/xdebug-2.2.3.tgz 然后开始编译(权限不够的加上 sudo 提成权限) tar xzf xdebug ...

  7. 中文乱码 encodeURI来解决URL传递时的中文问题

    解决中文乱麻问题,页面端发出的数据作两次encodeURI var name="张三"; encodeURI(encodeURI(name)); 后台解码: URLDecoder. ...

  8. Java8-Lambda-No.03

    import java.util.Comparator; import java.util.Objects; import java.util.UUID; import java.util.concu ...

  9. Linux C打印所有的环境变量

    #include <stdio.h> extern char** environ; int main() { ; ; environ[nIndex] != NULL; nIndex++) ...

  10. Codeforces Round #596 (Div. 2, based on Technocup 2020 Elimination Round 2) C. p-binary

    链接: https://codeforces.com/contest/1247/problem/C 题意: Vasya will fancy any number as long as it is a ...