TIL | 4주차 추석연휴 1) - Class 정리

김민호·2021년 9월 23일
0

WECODE TIL

목록 보기
6/24
post-thumbnail
post-custom-banner

- Class란 무엇인가?
- Class의 구조 - 속성, 메소드
- Class와 Instance의 차이점
- self란?
- Class의 특징 - 상속(Inheritance)
- Class의 def __init__(self) method

기본 개념

클래스(Class)

  • 객체를 만들어내는 틀, 설계도
  • 속성 + 메소드 로 구성 (속성+메소드를 클래스 멤버(class member)라고도 부름)
  • 속성 : 클래스에 포함되는 변수
  • 메소드 : 클래스에 포함되는 함수. 메소드의 첫 번째 매개변수는 항상 self
  • 클래스명은 항상 대문자로 시작

객체(Object)

  • 구현할 대상
  • 클래스에 선언된 형태로 생성된 실체
  • 모든 인스턴스를 대표하는 포괄적인 의미

인스턴스(Instance)

  • 설계도를 바탕으로 구현된 구체적인 실체
  • 객체가 실체화된 모습이 인스턴스 = 클래스로 생성된 객체(인스턴스가 객체에 포함됨)
  • 인스턴스는 메모리에 할당되어 실제 사용됨
  • 생성 : 인스턴스명 = 클래스명()

객체와 인스턴스

  • 인스턴스와 객체는 같다고 볼 수도 있음. 보통 객체만 지칭할 때는 그냥 객체(Object) 라고 부르고, 클래스로 만들어진 객체를 부를 때는 인스턴스(instance)
  • 트럭은 인스턴스다 라는 말 보다는 트럭은 객체다라는 표현이 어울림
    하지만 트럭은 자동차의 객체다라는 말보다는 트럭은 자동차의 인스턴스다라는 표현이 어울림

self

  • 클래스 내의 self란 클래스의 인스턴스
  • 객체 자기 자신을 참조하는 매개변수
class Person:
    def sayHello(self): 
        print("Hello")

minho = Person()
# minho라는 변수에 Person()이라는 클래스를 담았음
# minho가 Person의 인스턴스

minho.sayHello()
# 출력 : Hello

인스턴스 속성

  • __init__ : 클래스에 속성을 만들 때는 이 메소드 안에서 self.속성에 값 할당
  • __메소드__ 이런 메소드를 스페셜메소드(special method)라고 부름
  • __init__ 메소드에서 self 다음에 받을 매개 변수를 지정하고 self.속성으로 할당해주기
  • 클래스 안에서 바로 할당하는 속성은 인스턴스 속성이 아니라 클래스
class 클래스이름:
    def __init__(self, 매개변수1, 매개변수2):
        self.속성1 = 매개변수1
        self.속성2 = 매개변수2
class Person:
    def __init__(self, name, age, email):
      self.hello = '안녕하세요!'  # 여기서 self는 생성되는 인스턴스 자신이 되는 것
      self.name = name # 🔴
      self.age = age
      self.email = email

    def sayHello(self):
        print(f'{self.hello} 저는 {self.name}입니다.')

minho = Person("김민호", 30, "aaa@gmail.com")

minho.sayHello()
print(minho.name) # 🔴 이 문장은 결국 __init__ 에서 인자로 받은 name이 되는 것
print(minho.age)
print(minho.email)

# 안녕하세요! 저는 김민호입니다.
# 김민호
# 30
# aaa@gmail.com

상속(Inheritance)

  • 물려받은 변수나 속성은 유지하고 다른 기능을 추가할 때 사용하는 기능
  • 기반클래스(base class) : 기능을 물려주는 클래스 = 부모클래스, 슈퍼클래스
  • 파생클래스(derived class) : 상속을 받아 새롭게 만드는 클래스 = 자식클래스, 서브클래스
  • 생성 : class 파생클래스이름(기반클래스이름)

참조
https://dojang.io/mod/page/view.php?id=2373

def __init__(self)

  • 초기화 메소드, 생성자 메소드
  • 별도로 호출하지 않아도 Class의 Instance가 생성되는 순간 자동으로 실행
  • 이 메소드의 인자로 받은 값으로 변수의 값 초기화시켜줌
profile
개발자로서의 삶은 https://velog.io/@maxminos 에서 기록하고 있습니다 😀
post-custom-banner

0개의 댓글