본문 바로가기
멋쟁이사자처럼 AI스쿨

클래스 설계(파이썬 강의 Day5)

by 헬푸밍 2023. 1. 6.

클래스 설계

1. is a

- A is a B로 상속을 이용해서 클래스를 설계(상속)

2. has a

- A has a B로 객체를 객체에 넣어서 클래스를 설계(합성)

 

간단하게 is a를 사용해서 클래스를 만들어 보자!

 

이름과 이메일을 출력해주는 클래스이다.

class Info:
    def __init__(self, name, email):
        self.name = name
        self.email = email
        
class Person(Info):
    def show(self):
        print(self.name, self.email)

아래와 같이 객체를 생성해주고 이름과 이메일을 보면...

person = Person('peter', 'peter@gmail.com')
person.name, person.email

이렇게 나온다.

 

이것이 is a(상속)을 이용한 클래스 설계이다.

 

이번에는 has a를 사용해서 같은 클래스를 만들어 보자.

class Name:
    def __init__(self, name):
        self.name_str = name

class Email:
    def __init__(self, email):
        self.email_str = email

class Person:
    def __init__(self, name_obj, email_obj):
        self.name = name_obj
        self.email = email_obj
    def show(self):
        print(self.name.name_str, self.email.email_str)
 

이렇게 has a(합성)을 사용한 클래스 설계를 하고

name_obj = Name('peter')
email_obj = Email('peter@gmail.com')

아래와 같이 name_obj, email_obj객체를 생성해 준 뒤

name_obj = Name('peter')
email_obj = Email('peter@gmail.com')

한번 더 person객체를 생성하는데... name_obj, email_obj객체를 넣어서(합성) 생성하고...

show메서드를 통해 결과를 확인해보면

person = Person(name_obj, email_obj)
person.show()

이렇게 결과가 나온다.

 

이것이 has a(합성)을 사용한 클래스 설계이다.


이번 시간에는 짧게 is a, has a 개념에 대해 알아봤는데여...

 

완벽하게 이해하지는 못한것 같네여...

 

주말에 복습해봐야겠네요...

 

그럼 안녕!

댓글