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