반응형
파이썬(Django)에서 함수 재정의
django(python)에서의 메소드 재정의하는 방법은 경우에 따라 다르지만, 공식문서를 확인하는 것이 원칙입니다. 특히 모델의 save() 함수 등과 같이 모델의 경우에는 특히 공식문서를 확인하는 것이 원칙입니다.
일부 메서드에 *args 및 **kwargs가 필요한 이유는 이 것이 "템플릿"(반드시 있어야 하는 것)이 아니라, django가 메서드를 실행할 때 *args 및 **kwargs를 생략할 때 실수로 제외할 수 있는 다른 인수와 키워드 인수를 전달하기 위함입니다.
Django의 save() 함수을 보면 기본적으로 전달되는 수많은 키워드 인수가 있습니다.
추상적인 모델의 예를 보자. 이 옵션을 다음으로 재정의하는 경우:
class SomeAbstractModel(models.Model):
field = models.CharField(max_length=55)
class Meta:
abstract = True
def save(self):
super().save()
기본적으로 이 모델을 계승하는 모든 사람이 Django의 기본 키워드 인수를 무시하면서 인수를 전달하는 것을 허용하지 않는다. save() 함수이다. 이 경우 다음과 같이 쓰는 것이 더 나을 것이다.
def save(self, *args, **kwargs):
super().save(*args, **kwargs)
하지만, 만약 유연성이 필요하지 않다고 확신한다면, 혹은 코드에 의존하는 사람이 유연성, 확장성이 필요하지 않다면, 이런 재정의가 필요하지 않을 것이다. 반대로, 유연성, 확장성을 고려한, save()를 다른 개발자가 사용한다면 이런 식의 함수 재정의가 필요하다는 뜻이다.
[참조]
stackoverflow.com/questions/49655992/django-how-to-override-methods/49656182
반응형
'Development' 카테고리의 다른 글
API란 무엇인가? (0) | 2023.06.01 |
---|---|
MSA 아키텍처 (0) | 2023.05.31 |
django 커스텀 유저 모델(Custom User Model) (0) | 2021.03.09 |
django mssql 연결 (0) | 2021.03.05 |
아키텍처(Architecture) (0) | 2021.02.17 |