클래스 계층 구조 및 생성자가 관련되어 있습니다. 하위 클래스의 매개 변수는 부모에게 전달되어야합니다.파이썬의 생성자 전문
그래서, 파이썬에서, 우리는이 같은 끝낼 :
class Parent(object):
def __init__(self, a, b, c, ka=None, kb=None, kc=None):
# do something with a, b, c, ka, kb, kc
class Child(Parent):
def __init__(self, a, b, c, d, e, f, ka=None, kb=None, kc=None, kd=None, ke=None, kf=None):
super(Child, self).__init__(a, b, c, ka=ka, kb=kb, kc=kc)
# do something with d, e, f, kd, ke, kf
가 다스 자식 클래스 및 매개 변수의 많은이를 상상해보십시오. 새로운 매개 변수를 추가하는 것은 매우 지루합니다.
물론 명명 된 매개 변수를 사용하지 않고 * args 및 ** kwargs를 사용할 수는 있지만 메서드 선언이 모호합니다.
Python (2.6)에서이 문제를 우아하게 처리 할 패턴이 있습니까?
"우아하게"나는 매개 변수가 나타나는 횟수를 줄이려고합니다. a, b, c, ka, kb, kc는 모두 Child 생성자에서 Parent에 대한 super() 호출과 Parent 생성자에서 세 번 나타납니다.
적으로는, 내가 한 번 부모의 초기화에 대한 매개 변수를 지정하고 싶습니다, 그리고 자녀의 초기화에 만 추가 매개 변수를 지정합니다.
나는 같은 것을 할 싶습니다
class Parent(object):
def __init__(self, a, b, c, ka=None, kb=None, kc=None):
print 'Parent: ', a, b, c, ka, kb, kc
class Child(Parent):
def __init__(self, d, e, f, kd='d', ke='e', kf='f', *args, **kwargs):
super(Child, self).__init__(*args, **kwargs)
print 'Child: ', d, e, f, kd, ke, kf
x = Child(1, 2, 3, 4, 5, 6, ka='a', kb='b', kc='c', kd='d', ke='e', kf='f')
이 불행하게도 작동하지 않습니다, 4 년 이후, 5, 6 최종 최대 KD, KE, KF에 할당.
위의 작업을 수행 할 수있는 우아한 파이썬 패턴이 있습니까?
어떻게 작동하길 원하십니까? 여하튼 나는 더 우아함에 대한 가능성이 어디서 나오는 지 보지 못한다. –