반응형
파이썬에서는 생성자(Constructor)를 명시적으로 오버로딩하는 것은 지원되지 않습니다.
생성자는 클래스의 인스턴스를 초기화하는 특별한 메서드로, 파이썬에서는 __init__이라는 이름으로 사용됩니다. 이 메서드는 클래스의 객체가 생성될 때 자동으로 호출되며, 객체의 초기 상태를 설정하는 데 사용됩니다.
이전 포스팅에서 다뤘던 생성자를 조금 수정해 보겠습니다.
이러한 생성자는 C++, C#, Java와 같은 언어에서 사용하는 방식으로 생성자 중복(오버로딩)으로 만들었습니다. 하지만 파이썬에서는 생성자 오버로딩을 사용할 수 없습니다.
class Car:
make = ""
model = ""
year = 0
# 생성자
def __init__(self):
self.make = ""
self.model = ""
self.year = 0
# 생성자 중복(Overloading)
def __init__(self, mk, md, y):
self.make = mk
self.model = md
self.year = y
def setMake(self, m):
self.make = m
def setModel(self, m):
self.model = m
def setYear(self, y):
self.year = y
def PrintInfo(self):
print(f"제조업체: {self.make}, 모델: {self.model}, 년식: {self.year}")
car1 = Car()
car2 = Car('기아자동차', '쏘렌토', 2023)
car1.PrintInfo()
car2.PrintInfo()
실행하면 다음과 같은 오류 메시지를 출력합니다.
파이썬 생성자 오버로딩: 해결 방법
만약 여러 가지 초기화 방법을 제공하고 싶다면, 다양한 매개변수를 받을 수 있는 여러 개의 __init__ 메서드를 만들어 사용하는 대신, 기본값을 설정하거나 키워드 인수를 활용하여 단일 __init__ 메서드에서 여러 초기화 옵션을 다룰 수 있습니다.
예를 들어, 다음과 같이 매개변수의 초기화를 통해서 작성할 수 있습니다.
class Car:
make = ""
model = ""
year = 0
# 생성자에 초기값을 부여해서 생성자 중복을 처리할 수 있습니다.
def __init__(self, mk="", md="", y=0):
self.make = mk
self.model = md
self.year = y
def setMake(self, m):
self.make = m
def setModel(self, m):
self.model = m
def setYear(self, y):
self.year = y
def PrintInfo(self):
print(f"제조업체: {self.make}, 모델: {self.model}, 년식: {self.year}")
car1 = Car()
car2 = Car('기아자동차')
car3 = Car('기아자동차', '봉고2')
car4 = Car('기아자동차', '쏘렌토', 2023)
car1.PrintInfo()
car2.PrintInfo()
car3.PrintInfo()
car4.PrintInfo()
반응형
'Python' 카테고리의 다른 글
(파이썬) 3개의 값 중에서 가장 큰 값 구하기 (최대값 최소값) (0) | 2023.12.11 |
---|---|
(파이썬) 특정 년도가 윤년인지 확인하는 함수 is_leap_year (0) | 2023.12.10 |
(파이썬) Car 클래스 상속, Truck 정의하기 (0) | 2023.12.05 |
(파이썬) Car: 기본 클래스 만들기, 생성자 속성 메소드 (0) | 2023.12.05 |
(파이썬) 리스트에서 중복되지 않은 단어의 개수 세기 (0) | 2023.12.03 |