Python 다중 생성자

Muhammad Maisam Abbas 2023년10월10일
  1. Python의 생성자
  2. Python의 다중 생성자
Python 다중 생성자

이 튜토리얼에서는 생성자와 파이썬에서 여러 생성자의 필요성을 처리하는 방법에 대해 설명합니다.

Python의 생성자

Java, C++ 및 C# 프로그래밍 언어와 같은 프로그래밍 언어에는 클래스의 개체가 초기화될 때만 실행되는 생성자 함수의 개념이 있습니다. 생성자 함수는 모든 클래스 속성을 초기화하는 데 사용됩니다. 이 생성자 함수의 이름은 클래스의 이름과 같습니다. 생성자 함수의 개념은 파이썬에서 동일하지만 생성자 함수의 이름은 모든 클래스에 대해 __init__()입니다. Python의 생성자는 항상 하나의 매개변수, 즉 호출 객체에 대한 포인터를 취합니다. 다음 코드 스니펫은 Python에서 매개변수화되지 않은 생성자를 만드는 방법을 보여줍니다.

class Person:
    def __init__(self):
        print("Constructor Function")


if __name__ == "__main__":
    p1 = Person()

출력:

Constructor Function

Person 클래스에 대한 매개변수화되지 않은 생성자를 생성하고 메인 함수에 Person 클래스 객체를 생성했습니다. 생성자는 p1 = Person()으로 객체를 생성할 때 호출되었습니다.

Python의 다중 생성자

Java, C# 및 C++ 프로그래밍 언어에는 단일 클래스에 대해 원하는 만큼 생성자를 만들 수 있는 다중 생성자라는 개념이 있습니다. 불행히도 Python에서는 단일 클래스에 대해 여러 생성자를 정의할 수 없습니다. 이 제한을 해결하는 일반적인 방법은 기본 매개변수 생성자를 사용하는 것입니다. 기본 매개변수 생성자는 클래스 객체를 생성하는 동안 매개변수가 전달되지 않으면 자동으로 클래스 속성에 값을 할당하는 생성자입니다. 기본 매개변수 생성자는 객체 생성 중에 일부 값이 지정된 경우 지정된 값을 클래스 속성에 할당합니다. 다음 코드 스니펫은 Python에서 기본 매개변수 생성자를 사용하여 여러 생성자의 필요성을 제거하는 방법을 보여줍니다.

class Person:
    def __init__(self, name="Tom"):
        self.name = name

    def show(self):
        print("Name = ", self.name)


if __name__ == "__main__":
    p1 = Person()
    p2 = Person("Mark")
    p1.show()
    p2.show()

출력:

Name =  Tom
Name =  Mark

함수 정의 시 기본값을 지정하여 위의 코드에서 기본 매개변수 생성자를 생성했습니다. Person 클래스의 생성자는 매개변수 이름을 가져와 클래스 매개변수 name에 할당합니다. 매개변수 이름의 기본값은 Tom입니다. 메인 함수에서 Person 클래스의 p1p2라는 두 개의 객체를 생성했습니다. 객체 p1은 초기화하는 동안 값을 지정하지 않습니다. 객체 p2Mark를 생성자 매개변수로 전달합니다. 그런 다음 p1p2를 사용하여 show() 함수를 호출했습니다. show() 함수는 name 속성의 값을 표시합니다. p1show() 함수를 호출할 때 출력은 기본값 Name = Tom이지만 p2show() 함수를 호출할 때 출력은 Name = Mark입니다. p2 개체를 생성하는 동안 Mark.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

관련 문장 - Python Constructor