Python 05-2 OOP

7387 단어 pythonTILTIL

◾ 클래스와 객체

type: 공통 속성을 가진 객체들의 분류(class)

class: 객체들의 분류(class)를 정의할 때 쓰이는 키워드

클래스 생성

  • 클래스 생성은 class 키워드와 정의하고자 하는 <클래스의 이름>으로 가능하다.
  • <클래스의 이름>PascalCase로 정의한다.
  • 클래스 내부에는 데이터와 함수를 정의할 수 있고, 이때 정의된 함수는 메서드(method)로 불린다.
class <클래스이름>:
    <메소드>
    
class Person:
    pass
print(type(Person))
>> <class 'type'>

인스턴스 생성

  • 정의된 클래스(class)에 속하는 객체를 해당 클래스의 인스턴스(instance)라고 한다.
  • Person 클래스의 인스턴스는 Person()을 호출함으로써 생성된다.
  • type() 함수를 통해 생성된 객체의 클래스를 확인할 수 있다.
  • person1은 사용자가 정의한(user-defined) Person이라는 데이터 타입(data type)의 인스턴스이다.
# 인스턴스 = 클래스()
person1 = Person()
print(type(person1))

>> <class '__main__.Person'>

메서드 정의⭐⭐

  • 특정 데이터 타입(또는 클래스)의 객체에 공통적으로 적용 가능한 행위(behavior)들을 의미한다.
class Person:
    # 메서드(method)
    def talk(self):    # 인자로 self를 붙여줍니다.
        return '안녕'
    def eat(self, food):
        return f'냠냠 {food}'
    

생성자메서드

  • constructor method

  • 인스턴스 객체가 생성될 때 호출되는 함수

  • 생성자를 활용하면 인스턴스가 생성될 때 인스턴스의 속성을 정의할 수 있다.

def __init__(self):
    print('생성될 때 자동으로 호출되는 메서드입니다.')

소멸자 메서드

  • desrtuctor method
  • 인스턴스 객체가 소멸(파괴)되기 직전에 호출되는 함수.
def __del__(self):
    print('소멸될 때 자동으로 호출되는 메서드입니다.')

속성 정의

  • 특정 데이터 타입(또는 클래스)의 객체들이 가지게 될 상태/데이터를 의미한다
class Person:
    def __init__(self, name):
        self.name = name

    def talk(self):
        return f'안녕, 나는 {self.name}'
    
me = Person('메시호날두')
print(me.name)
>> 메시호날두

매직메서드

  • 더블언더스코어(__)가 있는 메서드는 특별한 일을 하기 위해 만들어진 메서드이기 때문에 스페셜 메서드 혹은 매직 메서드라고 불립니다.

  • 매직(스페셜) 메서드 형태: __someting__

  • __new__, __reduce__ , __reduce_ex__ , __repr__ , __rmod__ , __rmul__ , __setattr__ , __sizeof__ , __str__

  • __str__(self)

    • 특정 객체를 출력(print()) 할 때 보여줄 내용을 정의할 수 있음
    class Person:
        def __str__(self):
            return '객체 출력(print)시 보여줄 내용'

self

  • 인스턴스 자신
  • Python에서 메서드는 호출 시 첫번째 인자로 인스턴스 자신이 전달되게 설계되었다.

좋은 웹페이지 즐겨찾기