arg2
의 기본값이있는 Parent
클래스가 있습니다. 동일한 속성에 대해 다른 기본값을 갖는 하위 클래스 Child
을 생성하려고합니다. Child
에 *args
및 **kwargs
을 사용해야합니다. 하위 클래스의 기본 생성자 인수 값 변경 (부모 클래스에서 상속)
class Parent(object):
def __init__(self, arg1='something', arg2='old default value'):
self.arg1 = arg1
self.arg2 = arg2
print('arg1:', self.arg1)
print('arg2:', self.arg2)
class Child(Parent):
def __init__(self, *args, **kwargs):
super(Child, self).__init__(*args, **kwargs)
self.arg2 = kwargs.pop('arg2', 'new value')
. 사실, 내가 얻을 :
>>> c = Child()
arg1: something
arg2: default value # This is still the old value
>>> c.arg2
'new value' # Seems more or less ok
>>> c = Child('one', 'two')
arg1: one
arg2: two
>>> c.arg2
'new value' # This is wrong, it has overridden the specified argument 'two'
이것은 일어날 수밖에 없습니다. 두 번째 예제에서'arg2'는'kwargs [ 'arg2']'가 아니라'args [1]'입니다. – jonrsharpe
@jonrsharpe 네, 그리고 그것을 고칠 좋은 방법을 찾지 못하는 것 같습니다. –