객체와 클래스
객체(Object)
- 숫자에서 모둘까지 파이썬은 모든 것을 객체로 취급
- 객체는 데이터(변수, 속성)와 코드(함수, 메서드)를 모두 포함
- 객체는 어떤 구체적인 것의 유일한 인스턴스
클래스(Class)
- 클래시는 객체를 생성하기 위한 설계도 (틀)
- class문을 이용하여 정의
클래스 정의 및 객체 생성 예
#클래스 정의
class Person:
pass
person = Person() #객체 생성
__init__(self) 메서드
- 클래스로 객체를 생성할 때 객체의 초기화를 위한 메서드
class Person: def __init__(self): print('init person') person = Person()
def __init__(self):
self는....
- (인스턴스)메서드는 가장 첫 번째 인자로 객체의 인스턴스가 자동으로 넘어오며, 그 매개변수 이름은 관례적으로 self를 사용
- 모든 (인스턴스) 메서드의 첫 번째 매개변수는 self
객체에 속성(변수) 추가하기
class Person:
def __init__(self):
self.name = '홍길동'
person = Person()
print(person.name)
self.[이름]의 형식으로 객체에 속성을 추가할 수 있다.
__init__() 메서드를 이용하여 객체 속성값 초기화
class Person:
def __init__(self, name):
self.name = name
person = Person('임꺽정')
print(person.name)
Person('임꺽정')
1. Person 클래스의 정의를 찾는다
2. 새 객체를 메모리에 생성한다.
3. 객체의 __init__ 메서드 호출, 새롭게 생성된 객체를 self에 전달, 인자('임꺽정')을 name에 전달
4. 객체에 name(self.name)값을 저장한다.
5. 새로운 객체를 반환한다.
6. person에 객체(인스턴스)를 연결한다.
메서드
- 객체를 명사와 비교한다면 메서드는 동사와 비교될 수 있음
- 객체가 할 수 있는 행동(기능)
메서드 실습
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def is_adult(self):
return True if self.age > 19 else False
def eat(self):
print("냠냠")
baby = Person('아이' , 3)
adult = Person('어른' , 40)
print('어른' if adult.is_adult() else '아이')
baby.eat()
adult.is_adult() <-- 메서드 호출, self매개변수로는 객체의 인스턴스가 자동으로 할당
메서드에서 다른 메서드 호출
class Person:
def __init(self, name, age):
self.name = name
self.age = age
def is_adult(self):
return True if self.age > 19 else False
def eat(self):
print('냠냠' if self.is_adult() else '오물오물')
baby = Person('아가' , 3)
adult = Person('어른' ,40)
baby.eat()
adult.eat
self
인스턴스 메서드의 첫 번째 인자로 self를 항상 포함해야 함
- 객체의 인스턴스를 (파이썬 인터프리터로부터 자동으로) 전달받기 위한 메서드의 매개변수
- self이름을 꼭 써야하는 것은 아니지만 관례상 이름으로 self를 사용함
- ex
>>> driver = Driver() >>> driver.drive()
- 1. driver객체의 Driver클래스를 찾음
- 2. Driver 클래스의 driver()메서드의 self매개변수로 driver 전달
- 위의 문장은 아래와 같이 작성해도 동일하게 동작함
>>> Driver.driver(driver)
Summary
- 파이썬은 모든 것을 객체로 취급, 객체는 데이터와 코드를 포함.
- 객체는 어떤 구체적인 것의 유일한 인스턴스
- 클래스는 객체를 생성하기 위한 설계도(틀)과 같다.
- 클래스는 class문을 사용하여 정의
- __init() 메서드는 클래스로 객체를 생성할 때, 객체의 초기화를 위한 메서드
- 클래스의 모든 (인스턴스) 메소드의 첫 번째 매개변수는 self이다.
- self 매개변수로 객체의 인스턴스를 전달 받는다.
'Language > Python' 카테고리의 다른 글
야구게임 - 파이썬 (0) | 2022.03.04 |
---|---|
[Python] Ch7 - part2. 인스턴스, 메서드 (0) | 2021.07.01 |
[Python] Ch6 - part 3. 라이브러리 (0) | 2021.06.29 |
[Python] Ch6 - part 2. 패키지 (0) | 2021.04.24 |
[Python] Ch6 - part1. 모듈 (0) | 2021.04.24 |