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 ValueError('分数必须是整数') if value <0 or value>100: raise ValueError('分数必须0-100之间') self._score = value student = Student()student.score = 65print(student.score)65
score()方法上增加@property装饰器,等同于score= property(fget=score),将score赋值为property的实例。
所以,被装饰后的score,已经不是这个实例方法score了,而是property的实例score。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
介绍Python的@property装饰器的用法
在绑定属性时,如果我们直接把属性暴露出去,虽然写起来很简单,但是,没办法检查参数,导致可以把成绩随便改: s = Student() s.score = 9999 这显然不合逻辑.为了限制score的范围,可以通过一个set_score()方法来设置成绩,再通过一个get_score()来获取成绩,这样,在set_score()方法里,就可以检查参数: class Student(object): def get_score(self): return self._score def set_s
-
Python进阶之@property动态属性的实现
Python 动态属性的概念可能会被面试问到,在项目当中也非常实用,但是在一般的编程教程中不会提到,可以进修一下. 先看一个简单的例子.创建一个 Student 类,我希望通过实例来获取每个学生的一些情况,包括名字,成绩等.成绩只有等到考试结束以后才会有,所以实例化的时候不会给它赋值. class Student: def __init__(self, name): self.name = name self.score = None mike = Student('mike') 考试完以后,准
-
Python黑魔法@property装饰器的使用技巧解析
@property有什么用呢?表面看来,就是将一个方法用属性的方式来访问. 上代码,代码最清晰了. class Circle(object): def __init__(self, radius): self.radius = radius @property def area(self): return 3.14 * self.radius ** 2 c = Circle(4) print c.radius print c.area 可以看到,area虽然是定义成一个方法的形式,但是加上@pr
-
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装饰器的用法
取值和赋值 class Actress(): def __init__(self): self.name = 'TianXin' self.age = 5 类Actress中有两个成员变量name和age.在外部对类的成员变量的操作,主要包括取值和赋值.简单的取值操作是x=object.var,简单的赋值操作是object.var=value. >>> actress = Actress() >>> actress.name #取值操作 'TianXin' >&g
-
python @property的用法及含义全面解析
在接触python时最开始接触的代码,取长方形的长和宽,定义一个长方形类,然后设置长方形的长宽属性,通过实例化的方式调用长和宽,像如下代码一样. class Rectangle(object): def __init__(self): self.width =10 self.height=20 r=Rectangle() print(r.width,r.height) 此时输出结果为10 20 但是这样在实际使用中会产生一个严重的问题,__init__ 中定义的属性是可变的,换句话说,是使用一个
-
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多重继承的方法解析执行顺序实例分析
本文实例讲述了Python多重继承的方法解析执行顺序.分享给大家供大家参考,具体如下: 任何实现多重继承的语言都要处理潜在的命名冲突, 这种冲突由不相关的祖先类实现同名方法引起 class A: def say(self): print("A Hello:", self) class B(A): def eat(self): print("B Eating:", self) class C(A): def eat(self): print("C Eatin
-
python ubplot使用方法解析
这篇文章主要介绍了python ubplot使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 matlab中subplot()的作用,就是在同一画面中创建和控制多个图形位置. 一般使用格式:subplot(m,n,p) m--行数,即在同一画面创建m行个图形位置. n--列数,即在同一画面创建n列个图形位置. p--位数,在同一画面的m行,n列的图形位置. 下面以具体的实例,来说明subplot()的含义. x1=0:0.02:10;
-
Python中property属性实例解析
本文主要讲述的是对Python中property属性(特性)的理解,具体如下. 定义及作用: 在property类中,有三个成员方法和三个装饰器函数. 三个成员方法分别是:fget.fset.fdel,它们分别用来管理属性访问: 三个装饰器函数分别是:getter.setter.deleter,它们分别用来把三个同名的类方法装饰成property. fget方法用来管理类实例属性的获取,fset方法用来管理类实例属性的赋值,fdel方法用来管理类实例属性的删除: getter装饰器把一个自定义类
-
Python @property装饰器原理解析
这篇文章主要介绍了Python @property装饰器原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.通过@property装饰器,可以直接通过方法名来访问方法,不需要在方法名后添加一对"()"小括号. class Person: def __init__(self, name): self.__name = name @property def say(self): return self.__name xioabai
-
Python @property原理解析和用法实例
这篇文章主要介绍了Python @property原理解析和用法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在我们定义数据库字段类的时候,往往需要对其中的类属性做一些限制,一般用get和set方法来写,那在python中,我们该怎么做能够少写代码,又能优雅的实现想要的限制,减少错误的发生呢,这时候就需要我们的@property闪亮登场啦,巴拉巴拉能量--.. 用代码来举例子更容易理解,比如一个学生成绩表定义成这样 class Stude
-
python对url格式解析的方法
本文实例讲述了python对url格式解析的方法.分享给大家供大家参考.具体分析如下: python针对url格式的解析,可根据指定的完整URL解析出url地址的各个部分 from urlparse import urlparse url_str = "http://www.163.com/mail/index.htm" url = urlparse(url_str) print 'protocol:',url.scheme print 'hostname:',url.hostname
-
利用python将xml文件解析成html文件的实现方法
功能就是题目所述,我的python2.7,装在windows环境,我使用的开发工具是wingide 6.0 1.首先是我设计的简单的一个xml文件,也就是用来解析的源文件 下面是这个文件website.xml内容: <website> <page name="index" title="fuckyou"> <h1>welcome to</h1> <p>this is a moment</p> &
-
python zip()函数使用方法解析
这篇文章主要介绍了python zip()函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 参数iterable为可迭代的对象,并且可以有多个参数.该函数返回一个以元组为元素的列表,其中第 i 个元组包含每个参数序列的第 i 个元素.返回的列表长度被截断为最短的参数序列的长度.只有一个序列参数时,它返回一个1元组的列表.没有参数时,它返回一个空的列表. 当没有参数的时候 import numpy as np zz=zip() pr
随机推荐
- Vue利用路由钩子token过期后跳转到登录页的实例
- jquery实现网页的页面平滑滚动效果代码
- AngularJS过滤器filter用法总结
- 微信小程序开发之IOS和Android兼容的问题
- 12个非常有用的JavaScript技巧
- VBS教程:函数-DateAdd 函数
- 详解iOS App开发中改变UIButton内部控件的基本方法
- js实现创建删除html元素小结
- Android保持屏幕常亮
- php绘制一个扇形的方法
- jQuery窗口拖动功能的实现代码
- 深入C++实现函数itoa()的分析
- jQuery回调方法使用示例
- 解决jquery中动态新增的元素节点无法触发事件问题的两种方法
- jquery基础教程之deferred对象使用方法
- childNodes 用法两例
- Android Mms之:接收信息流程(图文详解)
- C语言的isatty函数和ttyname函数以及sendmsg函数用法
- 详解Android6.0运行时权限管理
- 什么是多层交换技术