[Python] class, super, *args, **kwargs

JAsmine_log·2025년 2월 23일

*args, **kwargs

  • *args: 위치 인수를 튜플로 받아 출력
  • **kwargs : 키워드 인수를 딕셔너리로 받아 출력

Function 예제

def print_args(*args):
    for arg in args:
        print(arg)

print_args('apple', 'banana', 'cherry')
>> apple
banana
cherry
def func_with_args_kwargs(*args, **kwargs):
    print("Positional arguments (args):", args)
    print("Keyword arguments (kwargs):", kwargs)

func_with_args_kwargs(1, 2, 3, a=4, b=5)
Positional arguments (args): (1, 2, 3)
Keyword arguments (kwargs): {'a': 4, 'b': 5}

Class 예제

# 저장 순서 : parent->init => child->ininit
class Parent:
    def __init__(self, *args):
        self.data = args

class Child(Parent):
    def __init__(self, *args, **kwargs):
        super().__init__(*args)  # 부모 클래스의 __init__에 위치 인수 전달 : 1, 2, 3,
        self.extra_data = kwargs  # 추가적인 키워드 인수 저장 : name='John', age=25

child_instance = Child(1, 2, 3, name='John', age=25)
print(child_instance.data)        # 출력: (1, 2, 3)
print(child_instance.extra_data)  # 출력: {'name': 'John', 'age': 25}
>> (1, 2, 3)
{'name': 'John', 'age': 25}
  • Child 클래스는 부모 클래스인 Parent로부터 상속받는다.

  • *args를 통해 모든 위치 인수를 부모 클래스의 init 메서드로 전달한다.

    • Positional arguments (*args)
  • **kwargs를 통해 받은 키워드 인수는 extra_data라는 인스턴스 변수에 저장한다.

    • Keyword arguments (**kwargs)
  • *args**kwargs를 활용하면 함수나 메서드에서 가변적인 인수를 유연하게 처리할 수 있다.

profile
Everyday Research & Development

0개의 댓글