
데이터 분석을 위한 Python
✔️ 생성자(constructor)
✔️ 클래스의 상속
✔️ 클래스 및 인스턴스 속성
✔️ 메서드 활용
✔️ 생성자(constructor)
생성자
생성자
클래스를 실행해서 인스턴스를 만들 때 자동으로 실행되고 초기값을 받도록 해주는 메소드
생성자(constructor)는 객체(인스턴스)가 생성되는 경우 자동으로 호출되는 메소드(주로 초기값 받을 때 사용)
클래스 내에서 메소드명으로 __init__ 를 사용 = 생성자
생성자_생성자를 활용한 사칙연산 계산기(FourCal2)
# 생성자를 이용해 초기값을 입력받는 FourCal2 생성 class FourCal2(): def __init__(self, num1, num2): self.num1 = num1 self.num2 = num2 def add(self): result = self.num1 + self.num2 return result def sub(self): result = self.num1 - self.num2 return result def mul(self): result = self.num1 * self.num2 return result def div(self): result = self.num1 / self.num2 return result # 결과 확인 gildong = FourCal2(10,5) # 덧셈 확인 print(gildong.add()) print() # 뺄셈 확인 print(gildong.sub()) print() # 곱셈 확인 print(gildong.mul()) print() # 나눗셈 확인 print(gildong.div())

생성자_num1과 num2를 0으로 받는 사칙연산 계산기(FoutCal3)
class FourCal3(): def __init__(self, num1, num2): self.num1 = 0 self.num2 = 0 def add(self): result = self.num1 + self.num2 return result def sub(self): result = self.num1 - self.num2 return result def mul(self): result = self.num1 * self.num2 return result def div(self): result = self.num1 / self.num2 return result # 결과 확인 sally = FourCal3(4,6) # 더하기 등의 연산은 수행 = 0 print(sally.add()) print() # 0이 들어가서 나눠지지 않음 sally.div()

✔️ 클래스의 상속
클래스의 상속
클래스의 상속
어떤 클래스를 만드는 경우 다른 클래스의 기능을 물려받는 것
기존의 클래스에 기능을 추가하는 경우 A 클래스를 상속받아 B 클래스를 생성 가능
A 클래스를 상속받은 B 클래스는 A클래스의 모든 기능 사용 가능
클래스의 상속_FourCal2을 상속받아 제곱 기능을 추가(MoreFourCal)
# FourCal2를 상속받아 모든 기능 사용 가능 class MorefourCal(FourCal2): def pow(self): result = self.num1 ** self.num2 return result # 결과 확인 dul = MorefourCal(2,3) dul.pow()

메서드 오버라이딩
메서드 오버라이딩(Method Overriding)
부모 클래스에서 상속한 메서드를 자식 클래스에서 동일한 이름으로 재정의
kim = FourCal2(4,0) print(kim.add()) print(kim.sub()) print(kim.mul()) # 에러 발생 -> 0으로 나눗셈은 진행되지 않음 # print(kim.div())

메서드 오버라이딩_ FourCal2 상속받은 후 div 함수를 제정의(SafeFourCal)
FourCal2는 num2에 0이 입력될 경우 div 메서드 실행 시 0으로 나누게 되기 때문에 에러 발생
SafeFourCal를 만들고 FourCal2 상속받은 후 div 함수를 제정의하여 에러 처리
class SafeFourCal(FourCal2): def div(self): if self.num2 == 0: return 0 else: return self.num1 / self.num2 # 결과 확인 kim = SafeFourCal(4,0) print(kim.add()) print(kim.sub()) print(kim.mul()) # 에러 발생 -> 0으로 나눗셈은 진행되지 않음 # SafeFourCal 적용 후 문제 없이 수행됨 print(kim.div())

메서드 오버로딩
메서드 오버로딩(Method Overloading)
한 클래스 안에서 동일 메서드의 기능을 다르게 재정의
동일한 이름의 메서드가 가능이 약간 변경된 채로 여러 개 존재
def add(num1, num2)
def add(num1, num2, num3)
def add(num1, num2, num3, num4)
# 메서드 오버로딩 클래스 생성 class OverloadingEx(): def add(self, x, y): return x + y def add(self, x, y, z): return x + y + z def add(self, x, y, z, a): return x + y + z + a # 결과 확인 sam = OverloadingEx() # 파이썬의 경우 가장 나중에 정의한 add 수행됨 # 변수를 적게 적은 경우 에러 발생 sam.add(10,20,30,40)

메서드 오버로딩_ multipledispatch 패키지를 통한 오버로딩
# 패키지의 설치가 필요한 경우 아래 주석 처리를 해제하여 설치 진행 # !pip install multipledispatch from multipledispatch import dispatch class OverloadingEx2(): @dispatch(int, int) def add(self, x, y): return x + y @dispatch(int, int, int) def add(self, x, y, z): return x + y + z @dispatch(int, int, int, int) def add(self, x, y, z, a): return x + y + z - a @dispatch(float, float, float, float) def add(self, x, y, z, a): return (x + y) - (z * a) # 결과 확인 sam = OverloadingEx2() # 변수의 갯수에 따라 수행됨 print(sam.add(1,2)) print() print(sam.add(1,2,3)) print() print(sam.add(1,2,3,4)) print() print(sam.add(3.3, 4.4, 1.1, 2.2)) print()

✔️ 클래스 및 인스턴스 속성
클래스 속성과 인스턴스 속성
클래스 속성과 인스턴스 속성
클래스 속성 : 클래스 전체에서 공유하는 속성(변수), 모든 인스턴스에서 공유
인스턴스 속성 : 인스턴스에서만 사용하는 속성, 인스턴스 간 공유 불가
class Family(): password = '0000' # 클래스 속성 kim = Family() kim.password

park = Family() park.password = '1234' # 인스턴스 속성 print(park.password) # 현재 할당된 1234는 다시 클래스를 불러오면 0000으로 변경된 password가 나타남 park = Family() park.password

클래스 속성_비공개 클래스 속성
비공개 클래스 속성
__변수명 : 비공개 속성
보안이 필요해서 남들에게 정보를 노출하고 싶지 않은 경우 사용
class Plnfo(): lastname = '홍' __first_name = '길동' __password = '9513' # 결과 확인 kim = Plnfo() kim.lastname # 비공개 클래스 속성을 확인하는 경우 에러 발생 kim.__password

# 비공개 클래스 속성을 직접 출력하려고 하면 에러 # 클래스 내에서 메서드를 만들어서 출력하면 출력 가능 class Plnfo(): lastname = '홍' __first_name = '길동' __password = '9513' def print_name(self): print(self.__first_name) def print_password(self): print(self.__password) # 결과 확인 sam = Plnfo() print(sam.print_name()) print(sam.print_password())

✔️ 메서드 활용
정적 메서드
정적메서드 (static method)
인스턴스를 만들지 않고 클래스의 메서드를 바로 사용할 수 있는 메서드
메서드 위에 @staticmethod라는 데코레이터 붙여서 생성
static method는 self를 받지 않으므로 인스턴스 속성, 인스턴스 메서드가 필요하지 않을 때 사용
# 정적 메서드 활용한 클래스 생성 class Cal(): @staticmethod def add(a, b): print(a+b) @staticmethod def sub(a,b): print(a-b) # 결과 확인 sally = Cal() print(sally.add(10,3)) # self 없이 바로 사용 가능 Cal.add(10,5)

클래스 메서드
클래스 메서드 (class method)
메서드 위에 @classmethod를 붙여서 생성
클래스 메서드의 첫 번째 매개변수에는 cls 지정해야 함
클래스 메서드도 staticmethod처럼 인스턴스 생성 없이 호출이 가능하다
클래스 메서드는 메서드 안에서 클래스 속성, 클래스 메서드에 접근해야 할 때 사용
class Factory(): n_coffee_machine = 0 # 클래스 속성 def __init__(self): # 클래스 속성에 직접 접근 Factory.n_coffee_machine += 1 @classmethod def print_n_coffee_machine(cls): print(f"{cls.n_coffee_machine}개가 제조되었습니다.") # 결과 확인 Factory.print_n_coffee_machine() # 인스턴스 생성 sam = Factory() sally = Factory() Factory.print_n_coffee_machine()

추상 클래스
추상 클래스 abc(abstract base class)
abs 모듈 필요
추상클래스는 추상클래스를 상속받아 클래스를 만들 때 반드시 만들어야 하는 메서드를 지정해주는 클래스
인터페이스
규칙을 부여하여 그 규칙에 따라 클래스를 만들도록 강제함
추상 클래스를 상속받은 클래스는 반드시 추상클래스에서 정의한 메소드를 overriding으로 구현
예) 이력서 양식에 맞추어 내용적기
from abc import * # 추상 메서드 활용한 클래스 생성 class CoffeeBase(metaclass=ABCMeta): @abstractmethod def bean_input(self): pass @abstractmethod def grind(self): pass # 결과 확인 # 추상 클래스는 인스턴스 생성 불가 -> 에러 발생 # sam = CoffeeBase() # 클래스 상속을 통한 확인 class CoffeeMachine2(CoffeeBase): def bean_input(self): print('커피 원두 넣기') def grind(self): print('커피 원두 갈기') # 상속된 클래스의 결과 확인 sam = CoffeeMachine2() sam.bean_input() sam.grind()

이번 내용에서는 파이썬 생성자와 클래스의 상속, 클래스 및 인스턴스의 속성, 메서드 활용에 대해 알아보았습니다.
데이터 분석을 하기 위해서는 가장 꾸준히 공부해야 하는 언어는 파이썬(Python)이라고 생각합니다.
앞으로 꾸준히 파이썬(Python) 내용을 공부하고 정리할테니 파이썬 코딩에 도움이 되었으면 좋겠습니다.
데이터를 가져오고 저장되는 DB에 대한 이해와 SQL 활용 능력도 중요하므로
제가 작성한 데이터 분석을 위한 SQL 글에 들어가서 DB와 MySQL에 대해 공부하면 좋을 것 같습니다.
'SQL/데이터 분석을 위한 MySQL' 카테고리의 글 목록
데이터 분석 공부 열심히 하는 중😁
everyonelove.tistory.com
또한 데이터 크롤링을 위해서 웹개발 언어에 대한 이해도 필요하기 때문에
제가 작성한 데이터 분석을 위한 HTML / CSS / Javascript 글에 들어가서 웹 개발 언어에 대해 공부하면 좋을 것 같습니다.
'HTML & CSS & Javascript/데이터 분석을 위한 웹 개발 언어' 카테고리의 글 목록
데이터 분석 공부 열심히 하는 중😁
everyonelove.tistory.com
제 블로그에 방문하면 데이터 분석과 관련된 다양한 정보들이 준비되어 있으니
관심 있는 분들은 방문해서 좋은 정보 얻어가시길 바랍니다.
ECODATALIST
데이터 분석 공부 열심히 하는 중😁
everyonelove.tistory.com
'Python > 데이터 분석을 위한 Python' 카테고리의 다른 글
[Python] 파이썬_파이썬의 datetime 모듈과 OS 모듈, 사용자 모듈 생성 및 활용 (0) | 2025.04.01 |
---|---|
[Python] 파이썬_파이썬의 클래스와 클래스 생성 위한 인스턴스 및 메서드 활용 (1) | 2025.03.31 |
[Python] 파이썬_파이썬의 람다(lambda) 표현식과 예외 처리 (0) | 2025.03.28 |
[Python]파이썬_파이썬의 위치인수, 가변위치인수, 키워드 인수, 가변 키워드 인수 활용 (0) | 2025.03.28 |
[Python] 파이썬_파이썬 함수 생성과 함수의 매개변수 및 return 값 (0) | 2025.03.27 |