반응형
장고처럼 instance 생성시 class 변수에 값 설정하기.
장고 예 : https://docs.djangoproject.com/en/1.6/intro/overview/#design-your-model
from django.db import models class Reporter(models.Model): full_name = models.CharField(max_length=70) # class 변수 # On Python 3: def __str__(self): def __unicode__(self): return self.full_name class Article(models.Model): pub_date = models.DateField() headline = models.CharField(max_length=200) content = models.TextField() reporter = models.ForeignKey(Reporter) # On Python 3: def __str__(self): def __unicode__(self): return self.headline
>>> from news.models import Reporter, Article # Create a new Reporter. >>> r = Reporter(full_name='John Smith') # 요거 흉내내기...
** 부모 class (Test) 의 생성자 (__init__) 내부에서 클래스변수 존재여부 확인후, 존재하면 값 설정한다.
주의 : 인스턴스변수가 없으면 클래스변수에서 찾는다.
(아래의 경우, self.student_name 가 instance 변수에 없으므로 class 변수 student_name 를 찾는다.)
class Test: def __init__(self,**name): for k , v in name.items(): # print repr(k), repr(v) try: getattr(self, k) # check if variable exist except Exception as excp: print excp pass # pass if variable not exist else: setattr(self,k,v) # 인스턴스변수 없으면 클래스변수에 값 설정함. print 'new val : self.' + k + ' = ', getattr(self,k) def __str__(self): pass def __unicode__(self): pass def save(self): print 'save.. data' pass class NewTest(Test): student_name ='' # 데이터 입력할 class 변수... def __str__(self): return "my student name == " + self.student_name
>>> tt = Test(name = 'AA', name2 = 'BB', name3 = 'CC') Test instance has no attribute 'name2' Test instance has no attribute 'name3' Test instance has no attribute 'name' >>> >>> tt3 = NewTest(student_name = 'YY') ## ... 성공... new val : self.student_name = YY >>> >>> tt2 = NewTest(name = 'KKK') NewTest instance has no attribute 'name' >>>
*** 추가 참고
http://blog.kevinastone.com/django-model-descriptors.html
반응형
'python' 카테고리의 다른 글
python ; == , is 차이점 , id, integer caching, string interning (0) | 2014.08.05 |
---|---|
Django 타임존 설정 (0) | 2014.07.30 |
terminal (interactive) 입력여부인지 확인하기.. (0) | 2014.07.21 |
windows -- console 키보드 입출력 (0) | 2014.07.21 |
windows 7 64bit 에서 pyPdf 모듈 설치하기 (0) | 2014.07.20 |