@property使用

# coding:utf-8
"""
property:负责把方法变成属性
"""

class Student(object):

    def get_score(self):
        return self._score

    def set_score(self, score):
        if not isinstance(score, int):
            raise ValueError(‘score must be an instance!‘)
        if score<0 or score>100:
            raise ValueError(‘score must between 0--100!‘)
        self._score = score

s =Student()
s.set_score(60)
print s.get_score()

#s.set_score(200)

"""
下面的方法既能检查参数,又可以用类似属性这样简单的方式来访问类的变量
把一个getter方法变成属性,只需要加上@property.
此时@property本身又创建了另一个装饰器@score.setter,负责把一个setter方法变成属性赋值
"""
class Student2(object):

    @property
    def score(self):
        return self._score

    @score.setter
    def score(self, score):
        if not isinstance(score, int):
            raise ValueError(‘score must be an instance!‘)
        if score<0 or score>100:
            raise ValueError(‘score must between 0--100!‘)
        self._score = score

s = Student2()
s.score =50
print s.score
#s.score = 120

"""
利用@property定义只读属性,只定义getattr,不定义setattr即可
"""
class Student3(object):

    @property
    def birth(self):
        return self._birth

    @birth.setter
    def birth(self,value):
        self._birth = value

    @property
    def age(self):
        return 2016 -  self._birth

s = Student3()
s.birth = 1988
print s.birth
print s.age
时间: 2024-12-28 17:07:59

@property使用的相关文章

python中的property

property(fget=None, fset=None, fdel=None, doc=None) -> property attribute fget is a function to be used for getting an attribute value, and likewise fset is a function for setting, and fdel a function for del'ing, an attribute. Typical use is to defi

Cannot read property &#39;Store&#39; of undefined nodejs express session

Express在使用mongodb的时候app配置出错!  "Cannot read property 'Store' of undefined" 原因主要是express版本4++问题 //settings.js module.exports={ cookieSecret:"xxxx", db:"dbname", host:"localhost", } //app.js var express = require("

uva 10526 - Intellectual Property(后缀数组)

题目链接:uva 10526 - Intellectual Property 题目大意:给定两个文本,问说下面一个文本中在哪些位置上抄袭了上面个一个文本的,输出n个抄袭位置(不足n个情况全部输出),按照长度优先输出,长度相同的输出位置靠前的. 注意:空格,回车都算一个字符:一段字符只能是抄袭上面的一部分,比如上:NSB*SB 下:NSB 答案:NSB. 解题思路:将两个文本连接在一起,中间用没有出现的字符分割,然后处理处后缀数组,根据height数组的性质,求出哪些位置匹配的长度不为0(注意匹配

webpack报错:Cannot assign to read only property &#39;exports&#39; of object &#39;#&lt;Object&gt;&#39;

这个倒霉错误在mac电脑上开发的时候非常顺利,可是用windows的时候就会报错. 百度查不到,google一查果然有. 原因是:The code above is ok. You can mix require and export. You can't mix import and module.exports. 也就是说,在webpack打包的时候,可以在js文件中混用require和export.但是不能混用import 以及module.exports. 于是查了一下代码,在自己的ma

JavaScript中的property和attribute的区别

时间: 2013-09-06 | 10:24 作者: 玉面小飞鱼 分类: DOM, js相关, 前端技术 2,222 次浏览 1. 定义 Property:属性,所有的HTML元素都由HTMLElement类型表示,HTMLElement类型直接继承自Element并添加了一些属性,添加的这些属性分别对应于每个HTML元素都有下面的这5个标准特性: id,title,lang,dir,className.DOM节点是一个对象,因此,他可以和其他的JavaScript对象一样添加自定义的属性以及方

staticmethod classmethod property方法

@staticmethod 静态方法 函数修饰符,用来修饰一个函数,类似于装饰器 class Dog(object): def __init__(self,name): self.name = name def eat(self,food): print('%s is eating %s'%(self.name,food)) d = Dog('二哈') d.eat('包子') #二哈 is eating 包子 eat()方法上面加上 @staticmethod class Dog(object)

Angular4 - Can&#39;t bind to &#39;ngModel&#39; since it isn&#39;t a known property of &#39;input&#39;.

用[(ngModel)]="xxx"双向绑定,如:控制台报错:Can't bind to 'ngModel' since it isn't a known property of 'input'.   解决办法:在app.module.ts文件中导入FormsModule Angular4 - Can't bind to 'ngModel' since it isn't a known property of 'input'.

Eclipse运行Maven命令时出现:-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match.问题解决

错误: -Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match. 这个错误是由于Maven版本与当前IDE不兼容导致的,解决方法如下: 1.Maven降级. 2.升级IDE. 3.可以尝试这个方法:

转: 解决Setting property &#39;source&#39; to &#39;org.eclipse.jst.jee.server的问题

我发现这个问题上网搜索 ,找到的地址为:http://blog.csdn.net/z69183787/article/details/19911935 .但是他的标题上也有一个"转",我没找到原作者,暂时只把找到的原址标注一下吧 这是我于2013年9月4号晚遇到的问题,为了这个问题我一夜没睡!对于这个问题,我相信我的方法已经能帮90%的人解决了!当你用Eclipse运行web项目的时候,你就会看到控制台出现:WARNING: [SetPropertiesRule]{Server/Ser

javascript中attribute和property的区别详解

DOM元素的attribute和property很容易混倄在一起,分不清楚,两者是不同的东西,但是两者又联系紧密.很多新手朋友,也包括以前的我,经常会搞不清楚. attribute翻译成中文术语为"特性",property翻译成中文术语为"属性",从中文的字面意思来看,确实是有点区别了,先来说说attribute. attribute是一个特性节点,每个DOM元素都有一个对应的attributes属性来存放所有的attribute节点,attributes是一个类数