django中@property裝飾器的運用

python提供的內置裝飾器——staticmethod、classmethod和propertyjava

在OSQA中,@property的使用頻率是很是高的。下面就是它的使用方法:python

@property 能夠將python定義的函數「當作」屬性訪問,從而提供更加友好訪問方式,和java中的setter和getter相似。django

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中使用:code

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。get

相關文章
相關標籤/搜索