知识点:

一、什么是property属性? 一种用起来像是使用的实例属性一样的特殊属性,可以对应于某个方法,Python的property属性的功能是:property属性内部进行一系列的逻辑计算,最终将计算结果返回。

二、property属性的有两种方式 :         

  • 装饰器 即:在方法上应用装饰器
  • 类属性 即:在类中定义值为property对象的类属性

1、使用装饰器时经典类和新式类的区别:

经典类中:property属性只有装饰器@property这一个

新式类中:具有三种@property装饰器,分别对应了三个被@property、@方法名.setter、@方法名.deleter修饰的方法,我们可以根据它们几个属性的访问特点,分别将三个方法定义为对同一个属性:获取、修改、删除

2、当使用类属性的方式创建property属性时,经典类新式类无区别

1、使用装饰器创建property属性的具体代码例子:

"""1、使用@property装饰器时,下面跟着的方法只有一个self参数,不会有其他参数,这个一般是获取这个方法的返回值,
2、如果要传值的话,就使用@获取方法的函数名.setter,后面跟着的方法可以而且只能传一个参数
3、为什么使用property属性:使用property属性后,调用类里面的方法时不需要加括号,这也是省去了调用方法时还要查看要不要传参的麻烦
而且简洁明了
"""
class Money(object):
def __init__(self):
self.__money = 0 # 获取方法返回的值
@property
def get_money(self): # 只能有一个self参数
return self.__money @get_money.setter
def set_money(self,value): # 只能有一个self和传递一个参数
if isinstance(value,int):
self.__money = value
else:
print('输入的不是整数') money = Money() # 创建实例对象
money.set_money = 200 # 给方法传参
c = money.get_money # 获取方法的返回值
print(c) 打印结果:
200

2、使用类属性创建property属性

class Money(object):
def __init__(self):
self.__money = 0 def set_money(self,value):
self.__money = value def get_money(self):
return self.__money
MONEY = property(get_money, set_money) # 这里函数放的顺序是从(获取,设置,删除)排的,不要搞错,我这里没有写删除,因为用的不多 mon = Money()
mon.MONEY = 50
val = mon.MONEY
print(val)

  

网络编程-Python高级语法-property属性的更多相关文章

  1. 网络编程-Python高级语法-装饰器

    理论:装饰器就是运行一个函数之前首先运行装饰器函数,python装饰器就是用于拓展原来函数功能的一种函数,这个函数的特殊之处在于它的返回值也是一个函数,使用python装饰器的好处就是在不用更改原函数 ...

  2. 网络编程-Python高级语法-GIL全局解释器锁

    知识点:GIL全局解释器锁其实和Python没有任何关系,是由于当初编写Python解释器时留下的,它只对多线程有影响,GIL保证同一时刻只有一个线程在运行,即使是多核配置电脑,同一时刻也只会让一个线 ...

  3. 网络编程-Python高级语法-闭包

    什么叫闭包?通俗来说就是函数里嵌套函数,从表现形式来看,内部函数引用外部函数的作用域里的变量,那么内部函数就称为闭包 举例说明: 1.闭包=函数块+定义函数时的环境,inner就是函数块,x就是环境 ...

  4. 网络编程-Python高级语法-深浅拷贝

    知识点:深浅拷贝,浅拷贝拷贝的是最顶层的东西,深拷贝是拷贝最深层的东西,光说可能理解不了,看下图 1.拷贝可变类型 2.拷贝不可变类型 3.拷贝元祖,元组内数据是可变类型

  5. Python高级语法-私有属性-名字重整(4.7.1)

    @ 目录 1.说明 2.代码 关于作者 1.说明 使用__dict__魔法方法 可以看到所有的属性,包括公有的,私有的,保护的等等 不能调用的原因就是,解释器把名字属性给重组了 其实是可以访问到的 2 ...

  6. Python高级语法-私有属性-with上下文管理器(4.7.3)

    @ 目录 1.说明 2.代码 关于作者 1.说明 上下文管理器 这里使用with open操作文件,让文件对象实现了自动释放资源.我们也能自定义上下文管理器,通过__enter__()和__exit_ ...

  7. Python高级语法-私有属性-魔法属性(4.7.2)

    @ 目录 1.说明 2.代码 关于作者 1.说明 常用的一些魔法方法如下 所谓魔法方法,就是调用的时候 不好好正常调用 2.代码 class Test: """ 我是__ ...

  8. Python高级语法之:一篇文章了解yield与Generator生成器

    Python高级语法中,由一个yield关键词生成的generator生成器,是精髓中的精髓.它虽然比装饰器.魔法方法更难懂,但是它强大到我们难以想象的地步:小到简单的for loop循环,大到代替多 ...

  9. Python高级语法-对象实例对象属性-Property总结(4.6.2)

    @ 目录 1.说明 2.代码 关于作者 1.说明 property属性,返回的是值 不是callable的,也就是不能使用方法来调用 只能传入self,不能传入其他 用处,能返回局部数据,比如当分页的 ...

随机推荐

  1. [Nmap] Regular script

    out of date: TCP:nmap.exe -sC -sS -sV -p 1-65535 -A -v -v -oX filename.xml ip UDP:nmap.exe -sC -sU - ...

  2. Eclipse 添加 Source 源代码、Javadoc 文档

    源代码 Source 按住 Ctrl 键,鼠标放到对应的类.方法上,出现 Open Declaration,Open Implementation ,可查看对应的实现.声明源代码. 也可以在[Proj ...

  3. 虚拟机网络配置和NFS

    Test Env: Ubuntu 16.04 VMware 克隆虚拟机 A 把一台虚拟机从一台服务器克隆到另一台服务器,拷贝.vmx(配置文件)和.vmdk文件,然后在新服务器的vmware直接打开. ...

  4. SpringBoot使用消息队列RabbitMQ

    RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲.消息分发的作用.RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,AMQP,即Advan ...

  5. [Tex学习笔记]小于等于一个常数乘以...

    偏微分的论文中常用: 小于等于一个常数乘以... 这个要怎么输入呢. 只要输入\lesssim 就能得到 $\lesssim$...哈哈. 以前知道, 但是忘记了. 现在又要用.

  6. Richard Sabey于2004年给出了由123456789各出现一次的e的估计

  7. v-charts 和 websocket实现数据展示动态推送

    v-charts https://v-charts.js.org/#/ ELEMENT力作: 在使用 echarts 生成图表时,经常需要做繁琐的数据类型转化.修改复杂的配置项,v-charts 的出 ...

  8. keras的网络结构与网络配置

    摘自: https://www.cnblogs.com/Anita9002/p/8136357.html Keras的网络配置

  9. 使用IntelliJ IDEA 配置Maven(转)

    1. 下载Maven 官方地址:http://maven.apache.org/download.cgi 解压并新建一个本地仓库文件夹 2.配置本地仓库路径 3.配置maven环境变量 4.在Inte ...

  10. sort与uniq命令详解

    1.sort的作用 (排序) sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出. 如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行 ...