객체
- 성질과 할 수 있는 행동이 담긴 자료
예를 들어, '철수'라는 인물이 있다고 할 때
철수의 이름, 나이, 사는 곳, 취미 등이 성질(변수)
철수의 밥 먹기, 운동하기, 잠자기 등이 행동(함수)에 해당한다.
클래스 생성
- 클래스 안에는 필드와 메서드가 채워진다.
- 필드와 메서드는 해당 클래스로 찍어낼 인스턴스의 특징이 된다.
class 클래스 이름:
class Cat:
필드
- 객체가 가지고 있는 성질(변수)
class Cat:
name = "Bongsu"
age = 10
메서드
- 객체가 할 수 있는 행동(함수)
class Cat:
def eat(self): #self -> 매서드(함수)의 첫번째 매개변수
print("냠냠")
클래스는 흔히 '틀'로 많이 비유된다.
인스턴스는 틀(클래스)로 찍어낸 객체를 말한다.
예를 들어, 붕어빵 틀은 클래스이고,
팥붕어빵, 슈크림붕어빵, 피자붕어빵은 인스턴스에 해당한다.
인스턴스 만들기
인스턴스이름 = 클래스이름()
bongsu = Cat()
인스턴스의 변수
인스턴스이름.변수이름
bongsu = Cat()
bongsu.name # Bongsu
bongsu.age # 10
인스턴스의 메서드
인스턴스이름.메서드()
bongsu = Bongsu()
bongsu.eat() # 냠냠
인스턴스 만들기 예시
# class Cat 생성
class Cat:
name = ""
age = 0
def exercise(self):
return "우다다"
# instance bongsu
bongsu = Cat()
bongsu.name = "Bongsu"
bongsu.age = 10
print(bongsu.name) # Bongsu
print(bongsu.age) # 10
상속하기
- 한 클래스의 내용을 다른 클래스가 이어 받는 것
class 상속받을클래스(상속할클래스):
class Pet: # Pet 클래스 생성
attr = "cute"
def cry(self):
return "야옹"
class Cat(Pet): # Pet클래스를 상속받았으므로
pass # 아무것도 적지 않아도 필드와 메서드가 들어있다
bongsu = Cat() # 인스턴스 bongsu 생성
print(bongsu.attr) # cute
print(bongsu.cry()) # 야옹
# Pet클래스를 상속받은 Cat클래스로 bongsu 인스턴스를 만들었으므로
# Pet클래스의 정보가 print된다.
다형성
- 같은 모양의 코드가 다른 역할을 하는 것
- 다형성을 통해 유사한 역할을 하는 필드와 메서드를 같은 이름으로 관리할 수 있다.
- 프로그램 관리가 쉬워지고, 코드의 길이가 줄어든다.
class Animal: # Animal 클래스 생성
legs = 0
def walk(self):
return ""
class Cat(Animal): # Animal 클래스를 상속받는 Cat클래스 생성
legs = 4 # 같은 필드, 메서드에 다른 내용을 입력할 수 있다.(다형성)
def walk(self):
return "사뿐사뿐"
class Human(Animal): # Animal 클래스를 상속받는 Human클래스 생성
legs = 2 # 같은 필드, 메서드에 다른 내용을 입력할 수 있다.(다형성)
def walk(self):
return "뚜벅뚜벅"
bongsu = Cat() # Cat클래스의 인스턴스 bongsu 생성
WH = Human() # Human클래스의 인스턴스 WH 생성
print(bongsu.legs) # 4
print(bongsu.walk()) # 사뿐사뿐
print(WH.legs) # 2
print(WH.walk()) # 뚜벅뚜벅
또 다른 예시코드
class Car:
type = "자동차"
horsePower = 100
class Lamborghini(Car):
horsePower = 700
aventador = Lamborghini()
print(aventador.type) #자동차
print(aventador.horsePower) #700
파이썬이 객체지향 언어임을 쉽게 확인하는 방법
- 파이썬은 객체 단위로 정보를 관리한다.
- 객체는 Value와 Type 속성을 가지고 있다.
n = 1987
print(n) # 1987
print(type(n)) # <class 'int'>
nums = [1,2,3]
print(nums) # [1,2,3]
print(type(nums)) # <class 'list'>
'데이터 분석' 카테고리의 다른 글
클러스터링(군집화) 타당성 평가 (0) | 2024.09.14 |
---|---|
wine 데이터셋을 활용한 혼동행렬 시각화 (0) | 2024.09.14 |
주식정보 크롤링하기 (0) | 2024.09.09 |
StringIO객체 (1) | 2024.09.09 |
연속형, 이산형, 범주형 데이터 (0) | 2024.09.07 |