Python @property装饰器原理解析
这篇文章主要介绍了Python @property装饰器原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
1.通过@property装饰器,可以直接通过方法名来访问方法,不需要在方法名后添加一对“()”小括号。
class Person: def __init__(self, name): self.__name = name @property def say(self): return self.__name xioabai = Person("xiaobai") #直接通过方法名来访问say方法 print("我的名字是:", xiaobai.say)
我的名字是: xiaobai
上面程序中,使用@property修饰了say()方法,这就使得该方法变成了name属性的getter方法。
2.使用setter装饰器,可以为say方法添加setter方法。
class Person: def __init__(self, name): self.__name = name @property def say(self): return self.__name @say.setter def say(self, value): self.__name = value xiaobai = Person("xiaobai") xiaobai.say = "xiaohei" print("我的名字其实是:", xiaobai.say)
我的名字其实是: xiaohei
3.使用deleter装饰器来删除指定属性,可以为say方法添加deleter方法
class Person: def __init__(self, name): self.__name = name @property def say(self): return self.__name @say.setter def say(self, value): self.__name = value @say.deleter def say(self): self.__name = "xxx" xiaobai = Person("xiaobai") del xiaobai.say print("我的名字其实是:", xiaobai.say)
我的名字其实是: xxx
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
Python 中@property的用法详解
在绑定属性时,如果我们直接把属性赋值给对象,比如: p = Person() p.name= 'Mary' 我们先看个详细的例子(注意双下划线name和age定义为私有变量): class Person(object): def __init__(self, name, age): self.__name = name self.__age = age def get_age_fun(self): return self.__age def set_age_fun(self, value): i
-
python中property属性的介绍及其应用详解
Python的property属性的功能是:property属性内部进行一系列的逻辑计算,最终将计算结果返回. 使用property修饰的实例方法被调用时,可以把它当做实例属性一样 property的用法1--装饰器方式 在类的实例方法上应用@property装饰器 class Test: def __init__(self): self.__num = 100 @property def num(self): print("--get--") return self.__num @n
-
Python中@property的理解和使用示例
本文实例讲述了Python中@property的理解和使用.分享给大家供大家参考,具体如下: 重看狗书,看到对User表定义的时候有下面两行 @property def password(self): raise AttributeError('password is not a readable attribute') @password.setter def password(self, password): self.password_hash = generate_password_ha
-
python3.6中@property装饰器的使用方法示例
本文实例讲述了python3.6中@property装饰器的使用方法.分享给大家供大家参考,具体如下: 1.@property装饰器的使用场景简单记录如下: 负责把一个方法变成属性调用: 可以把一个getter方法变成属性,@property本身又创建了另一个装饰器@score.setter,负责把一个setter方法变成属性赋值: 只定义getter方法,不定义setter方法就是一个只读属性 2.通过一个例子来加深对@property装饰器的理解:利用@property给一个Screen对象
-
Python进阶之@property动态属性的实现
Python 动态属性的概念可能会被面试问到,在项目当中也非常实用,但是在一般的编程教程中不会提到,可以进修一下. 先看一个简单的例子.创建一个 Student 类,我希望通过实例来获取每个学生的一些情况,包括名字,成绩等.成绩只有等到考试结束以后才会有,所以实例化的时候不会给它赋值. class Student: def __init__(self, name): self.name = name self.score = None mike = Student('mike') 考试完以后,准
-
python基于property()函数定义属性
这篇文章主要介绍了python基于property()函数定义属性,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 正常情况下,类包含的属性应该是隐藏的,只允许通过类提供的方法来间接的实现对类属性的访问和操作. class Person: #构造函数 def __init__(self, name): self.name = name #设置name属性值的函数 def setname(self, name): self.name = name
-
Python @property使用方法解析
1. 作用 将类方法转换为类属性,可以用 . 直接获取属性值或者对属性进行赋值 2.实现方式 使用property类来实现,也可以使用property装饰器实现,二者本质是一样的.多数情况下用装饰器实现. class Student(object): @property def score(self): return self._score @score.setter def score(self, value): if not isinstance(value ,int): raise Val
-
Python中property属性实例解析
本文主要讲述的是对Python中property属性(特性)的理解,具体如下. 定义及作用: 在property类中,有三个成员方法和三个装饰器函数. 三个成员方法分别是:fget.fset.fdel,它们分别用来管理属性访问: 三个装饰器函数分别是:getter.setter.deleter,它们分别用来把三个同名的类方法装饰成property. fget方法用来管理类实例属性的获取,fset方法用来管理类实例属性的赋值,fdel方法用来管理类实例属性的删除: getter装饰器把一个自定义类
-
python3中property使用方法详解
本文实例为大家分享了python3中的property使用方法,供大家参考,具体内容如下 property属性 定义 一个可以使实例方法用起来像实例属性一样的特殊关键字,可以对应于某个方法,通过使用property属性,能够简化调用者在获取数据的流程(使代码更加简明). property属性的定义和调用要注意以下几点: 调用时,无需括号,加上就错了:并且仅有一个self参数 实现property属性的两种方式 装饰器 新式类中的属性有三种访问方式,并分别对应了三个被 @property对应读取
-
Python @property装饰器原理解析
这篇文章主要介绍了Python @property装饰器原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.通过@property装饰器,可以直接通过方法名来访问方法,不需要在方法名后添加一对"()"小括号. class Person: def __init__(self, name): self.__name = name @property def say(self): return self.__name xioabai
-
Python函数装饰器原理与用法详解
本文实例讲述了Python函数装饰器原理与用法.分享给大家供大家参考,具体如下: 装饰器本质上是一个函数,该函数用来处理其他函数,它可以让其他函数在不需要修改代码的前提下增加额外的功能,装饰器的返回值也是一个函数对象.它经常用于有切面需求的场景,比如:插入日志.性能测试.事务处理.缓存.权限校验等应用场景.装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用.概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能. 严格来说,装饰器只是语法糖,
-
Python自定义装饰器原理与用法实例分析
本文实例讲述了Python自定义装饰器原理与用法.分享给大家供大家参考,具体如下: 什么是装饰器?装饰器本质是一个函数,它可以在不改变原来的函数的基础上额外的增加一些功能.如常见的@classmethod,@staticmethod等都是装饰器,接下来记录下如何自定义个装饰器: 刚刚说过了,装饰器的本质就是一个函数,所有想要自定义一个装饰器,首先自定义一个函数 def decorate(func): def wrapper(*args,**kwargs): print("定义一个装饰器"
-
python @property 装饰器使用方法
目录 一.property的装饰器用法 二.举例说明 1.不用setter和getter方法的实现 2.使用setter和getter的实现,增加温度值输入的限制 3.利用property装饰器实现的版本 一.property的装饰器用法 先简单上个小栗子说明: class property(fget=None,fset=None,fdel=None,doc=None) fget是用于获取属性值的函数 fset是用于设置属性值的函数 fdel是用于删除属性值的函数 doc为属性对象创建文档字符串
-
Python property装饰器使用案例介绍
目录 1.property 2.property属性定义的两种方式 3.案例 1.property 装饰器:装饰器是在不修改被装饰对象源代码以及调用方式的前提下为被装饰对象添加新功能的可调用对象 property是一个装饰器,是用来绑定给对象的方法伪造成一个数据属性 装饰器property,可以将类中的函数“伪装成”对象的数据属性,对象在访问该特殊属性时会触发功能的执行,然后将返回值作为本次访问的结果. 使用property有效地保证了属性访问的一致性.另外property还提供设置和删除属性的
-
Python classmethod装饰器原理及用法解析
英文文档: classmethod(function) Return a class method for function. A class method receives the class as implicit first argument, just like an instance method receives the instance. To declare a class method, use this idiom: class C: @classmethod def f(c
-
python知识:装饰器@property到底有啥用途
目录 一.提要 二.关于属性的约定 2.1 类绑定属性 2.2 对象绑定属性 2.3 私有属性 三.应用@property装饰器 3.1 将一个属性转成方法 3.2 私有化某些属性 3.3 关联性修改 3.4 删除属性的deleter方法 四.property()函数原理 总结 一.提要 python的@property是python的一种装饰器,是用来修饰方法的. python @property 装饰器使一个方法可以像属性一样被使用. 除此之外,还有几个使用场景,本文将叙述这些使用技巧. 二
-
Python深入分析@property装饰器的应用
目录 什么是property property属性定义的两种方式 @property属性值的限制 什么是property 简单地说就是一个类里面的方法一旦被@property装饰,就可以像调用属性一样地去调用这个方法,它能够简化调用者获取数据的流程,而且不用担心将属性暴露出来,有人对其进行赋值操作(避免使用者的不合理操作).需要注意的两点是 调用被装饰方法的时候是不用加括号的 方法定义的时候有且只能有self一个参数 >>> class Goods(): def __init__(sel
-
python @propert装饰器使用方法原理解析
这篇文章主要介绍了python @propert装饰器使用方法原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 首先,@propert的作用是把类中的方法『变成』了属性,方便通过实例访问.propert可以有两种用法:可以把一个方法变成只读属性:可以对一些属性进行过滤. 想象这样一个场景,在实例化一个类之后,需要对类的一个属性进行赋值,这时候是没有对属性属性被赋予的值进行判断的,如果属性被赋予了一个不合适的值,那么代码在后面执行的时候就会
-
python3 property装饰器实现原理与用法示例
本文实例讲述了python3 property装饰器实现原理与用法.分享给大家供大家参考,具体如下: 学习python的同学,慢慢的都会接触到装饰器,装饰器在python里是功能强大的语法.装饰器配合python的魔法方法,能实现很多意想不到的功能.废话不多说,如果你已经掌握了闭包的原理,代码的逻辑还是可以看明白的,咱们直接进入正题. property的意义 @property把一个类的getter方法变成属性,如果还有setter方法,就在setter方法前面加上@method.setter.
随机推荐
- Java默认传入时间段时间的实例
- MySQL 5.7.16 修改密码提示 ERROR 1054 (42S22): Unknown column ''password'' in ''field list''的原因
- Jquery 过滤器(first,last,not,even,odd)的使用
- Java的Struts框架中Action的编写与拦截器的使用方法
- Yii数据读取与跳转参数传递用法实例分析
- PHP弹出对话框技巧详细解读
- PHP中文件缓存转内存缓存的方法
- XSL简明教程(6)XSL过滤和查询
- 熊猫烧香病毒,熊猫病毒专杀,最新变种清除,删除方法 超强推荐
- sql server中千万数量级分页存储过程代码
- 初识JQuery 实例一(first)
- 不用一句js代码初始化组件
- ASP编程入门进阶(十八):FSO组件之文件操作(下)
- freemarker判断对象是否为空的方法
- IntersectionObserver实现图片懒加载的示例
- 中国站长对Google Adsense规则的曲解
- Android版本更新实例详解
- 在Windows版的PHP中使用ADO
- async和DOM Script文件加载比较
- 一个月入门Python爬虫学习,轻松爬取大规模数据