zoukankan      html  css  js  c++  java
  • django中@property装饰器的运用

    python提供的内置装饰器——staticmethod、classmethod和property

    在OSQA中,@property的使用频率是非常高的。下面就是它的使用方法:

    @property 可以将python定义的函数“当做”属性访问,从而提供更加友好访问方式,和java中的setter和getter类似。

    models.py中如下:

    from django.db import models
    
    class Person(models.Model):
        G=(('chen','jian'),('hong','yi'),('rt','ju'))
        gender=models.CharField(max_length=20,choices=G)
    
        @property
        def Gender(self):
            return self.gender
    
        @Gender.setter
        def Gender(self,new_value):
            self.gender=new_value

    在views.py中使用:

    from django.http import HttpResponse
    from mytest.models import *
    def index(request):
        print Person.objects.all()[0].Gender
        b=Person.objects.all()[0]
        b.Gender='adfasfasd'
        print b.Gender
        b.save()
        return HttpResponse(Person.objects.all()[0].Gender)
    

    @property提供的是一个只读的属性,如果需要对属性进行修改,那么就需要定义它的setter。

  • 相关阅读:
    java se 转到ee小结
    objective c基本知识
    2013_11_14:递归算法(2)—全排列
    2013_11_13:递归算法(1)
    2013_11_13:关于 new 和delelte 的使用
    c++调试问题
    模式匹配BM算法介绍与实现
    一个n数组求和问题
    机试题
    算法题目
  • 原文地址:https://www.cnblogs.com/frchen/p/5709500.html
Copyright © 2011-2022 走看看