Google App Engine에 장바구니 앱을 만들고 있습니다. Python : 하위 클래스가 상속 된 메서드를 오버로드 할 수 있습니까?
class BaseHandler(webapp.RequestHandler):
def get(self, CSIN=None):
self.body(CSIN)
이 모든 자손 클래스의
body()
방법은 같은 인수를 가질 필요가 있다는 뜻 : 나는 기본이되는 핸들러에서 파생 된 많은 클래스가? 이것은 성 가시다. 오직 한 명의 자손 만이이 인수를 실제로 사용합니다. 그리고 새로운 args를 추가하면 어떨까요? 모든 수업을 끝내야합니까?
class Detail(BaseHandler):
def body(self, CSIN):
class MainPage(BaseHandler):
def body(self, CSIN=None): #@UnusedVariable
class Cart(BaseHandler):
def body(self, CSIN): #@UnusedVariable
실제로, 아마도 당신이 맞습니다. 어떻게 그 데이터에 액세스 할 수 있습니까? –
get은'body'를 호출하기 전에'self.CSIN = CSIN'과 다른 모든 속성을 사용할 수 있습니다. 핸들러는 필요하다면'self.CSIN'을 읽을 수 있고 그렇지 않은 경우는 읽을 수 없습니다. CSIN이 실제로 전체 요청의 속성 인 경우에만이 작업을 수행합니다. 단,이 * 특정 * 호출의 속성이 아닙니다. CSIN의 값이 다른 동일한 핸들러 객체에서'body'를 두 번 이상 호출 할 수 있다면 핸들러의 속성이 아니라 실제로 함수 매개 변수입니다. 그렇지 않으면 일을 깔끔하게 처리하기 위해 필요한 모든 데이터를 처리기에 저장할 수 있습니다. –
... 또 다른 옵션은 실제로 필요한 것에 따라 BaseHandler가 다른 메소드를 호출하도록하는 것입니다. 때로는 너무 많은 특수한 경우를 하나의 추상화로 밀어 넣으려고 시도했으며 실제로 "본문"은 모든 구체화에서 동일한 목적을 수행하지 못한다는 것을 알고 있습니다. 유일한 차이점은 CSIN이 신체를 렌더링하는 데 필요한 것인지 아닌지 여부가 여기에 해당하지 않을 수도 있습니다.하지만 상황이 나빠지면 결국 끝날 수 있습니다. –