关于 python 的 @property总结和思考

其实关于@property我到处去搜了很多教程来看,因为公司大量使用了oop的编程而我以前很少写,所以现在来重新补过来。

从使用上来说 加了@property之后最明显的区别就是

 class Student(object):

    def get_score(self):
        return self._score

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

#实例化Student类
x = Student()

#调用get_score方法
x.get_score()

然而如果你加上了@property
那么x.get_score 就可以运行了

这可能是我最明显最直观对 @property的感受。

其他的在使用@property之后还有很多特性都可以使用了

详情参考http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386820062641f3bcc60a4b164f8d91df476445697b9e000

廖雪峰 老师的教程。

时间: 2024-09-28 17:11:23

关于 python 的 @property总结和思考的相关文章

python中@property的使用

python中@property的使用 @property的作用是把一个getter方法变成属性,@xxx.setter把setter方法变成属性赋值. #coding:utf-8 class Screen(object): @property def width(self): return self._width @width.setter def width(self,value): if not isinstance(value,int): raise ValueError('width

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

通常,访问类和实例属性的时候,将返回所存储的相关值,也就是直接和类(实例的)的__dict__打交道.若果要规范这些访问和设值方式的话, 一种方法是数据描述符,另一种就是python内置的数据描述符协议函数Property().property是一种特殊的值,访问它时会计算它的值. 特性的原型函数是property(getf=None,setf=None,delf=None,doc=None),函数的前三个参数分别对应描述符的__get__.__set__.__delete__方法. class

【转】python之property属性

1. 什么是property属性 一种用起来像是使用的实例属性一样的特殊属性,可以对应于某个方法 # ############### 定义 ############### class Foo: def func(self): pass # 定义property属性 @property def prop(self): pass # ############### 调用 ############### foo_obj = Foo() foo_obj.func() # 调用实例方法 foo_obj.p

python中@property的作用和getter setter的解释

@property作用: python的@property是python的一种装饰器,是用来修饰方法的. 我们可以使用@property装饰器来创建只读属性,@property装饰器会将方法转换为相同名称的只读属性,可以与所定义的属性配合使用,这样可以防止属性被修改. 1.修饰方法,让方法可以像属性一样访问. class DataSet(object): @property def method_with_property(self): ##含有@property return 15 def m

python中 @property与

考察 Student 类: class Student(object): def __init__(self, name, score): self.name = name self.score = score 当我们想要修改一个 Student 的 scroe 属性时,可以这么写: s = Student('Bob', 59) s.score = 60 但是也可以这么写: s.score = 1000 显然,直接给属性赋值无法检查分数的有效性. 如果利用两个方法: class Student(

Python 之 @property

在阅读廖雪峰的Python的笔记时,读到了@property特性,发现略有不足,由于自己是初学,希望惠及更多的初学者吧. @property 的用途是什么呢? 下面一步一步地介绍. 定义类Student,拥有变量名name和score class Student(object):   def __init__(self,name,score):       self.name = name       self.score = score 这样,我们可以在类外修改Student的实例的成员变量:

python 中@property的使用

从14年下半年开始接触到python,自学了一段时间,后又跟别人学习了下,把基础知识基本上学过了.忽然感觉python不可能这么简单吧,就这么点东西?后来看了下书,发现还有很多的高级部分.连续看了两天,把装饰符@看了下,记录下. @装饰符的作用就是类里的方法变成属性使用,比直接调用方法要直接简单 直接上代码(没有@的): 1 class Student(object): 2 def get_age(self): 3 return self.__age 4 def set_age(self,age

python的property语法的使用

Python中有一个property的语法,它类似于C#的get set语法,其功能有以下两点: 将类方法设置为只读属性: 实现属性的getter和setter方法: 下面着重说明这两点: 将类方法设置为只读属性 首先请阅读下面的代码 # -*- coding:utf-8 -*- class Book(object):     def __init__(self, title, author, pub_date):         self.title = title         self.