Python/파이썬 기초 강의(2024)★

파이썬, 클래스 생성자 오보로딩 상속 class __init__ self

코딩ABC 2024. 11. 25. 12:13
반응형

파이썬 클래스에 대해 알아 보겠습니다.

여기서는 이해를 쉽게하기 위해서 사람(Person)의 이름과 나이를 표현해 봅니다.

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

    def greet(self):
        return f"안녕하세요, 저는 {self.name}이고 {self.age}살입니다."

# 사용 예제
person1 = Person("홍길동", 30)
print(person1.greet())

코드 설명

  1. __init__ 메서드:
    • 클래스를 초기화하는 생성자 메서드입니다.
    • name과 age를 매개변수로 받아 self.name과 self.age에 저장합니다.
  2. greet 메서드:
    • 사람 객체의 이름과 나이를 출력하는 메서드입니다.
  3. 객체 생성 및 사용:
    • Person("홍길동", 30)으로 이름이 "홍길동"이고 나이가 30인 사람 객체를 생성합니다.
    • greet 메서드를 호출하여 해당 객체의 정보를 출력합니다.

파이선의 생성자는 오버로딩을 지원하지 않습니다.

즉, Person을 생성할 때

p1 = Person()

p2 = Person('홍길동', 22)

 

위의 2가지 방법으로 생성하기 위해서 아래와 같이 2개의 생성자를 정의할 수 없습니다.

__init(self)__

__init(self, name, age)__

파이썬, 클래스 생성자 오보로딩 상속은 이렇게는 안됨

 

생성자 오버로딩 문제는 생성자 매개변수의 기본값을 사용해서 해결할 수 있습니다.

 

생성자 매개변수의 기본값으로 생성자 오버로딩 표현

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


    def info(self):
        return f"이름: {self.name}, 나이: {self.age}"

# 사용 예제

p1 = Person()
print(p1.info())

p2 = Person("홍길동", 30)
print(p2.info())

파이썬, 클래스 생성자 오보로딩 상속 class __init__ self

 

상속

위에서 정의한 사람(person)을 상속받는 학생(Student) 클래서를 정의해 보겠습니다.

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


    def info(self):
        return f"이름: {self.name}, 나이: {self.age}"

class Student(Person):
    def __init__(self, name, age, major, year):
        super().__init__(name, age)  #슈퍼 클래스의 생성자 호출
        self.major = major
        self.year = year

    def info(self):
        return f"이름: {self.name}, 나이: {self.age}, 학과: {self.major}, 학년: {self.year}"
        
p1 = Person()
print(p1.info())

p2 = Person("홍길동", 30)
print(p2.info())

s1 = Student('가나다',20,'컴퓨터공학', 2)
print(s1.info())

파이썬, 클래스 생성자 오보로딩 상속 class __init__ self

반응형