반응형
장고처럼 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 |


