[Python] 클래스란?

민지·2024년 8월 13일

Python

목록 보기
1/2
post-thumbnail

Python 클래스(class) 상속 (interitance)

Pytorch 강의를 듣는데 아직도 클래스를 왜 쓰는지 모르겠다
더 강의가 진행되기 전에 완벽하게 이해하고 넘어가야지

class Person:
	""" Supper Class"""
    # 클래스 변수
    total_count = 0
    
    # 생성자 메서드
    def __init__(self):
    	self.name = '홍길동'
        self.age = 1
        Person.total_count += 1
    
    # class내 정의된 함수(method)
    def introduce(self):
    	print(f'제 이름은 {self.name} 이고, 나이는 {self.age} 살 입니다.')
class Student(Person):
	""" Sub Class"""
    
    def __init__(self):
    	super().__init__()

클래스란?

  • 클래스 : 반복되는 무엇인가를 생산해내는 공장
  • 객체(Object) : 공장으로부터 생산된 결과물

그래서 클래스 왜 쓰는건대?

객체지향의 주요 특징인 추상화,캡슐화,상속,메소드오버라이딩 등의 장점이 있어 편리함
간단한 구현은 함수형이 편리

상속(inheritance)
- 부모 클래스에 정의된 다양한 메서드, 클래스 변수를 그대로 활용할 수 있다

클래스 용어 정리

  • 부모 클래스(Super Class) : 모태가 되는 클래스
  • 자식 클래스(Sub Class,Child Class) : 부무로부터 상속 받은 클래스
  • 생성자(Constructor)
  • __ init __() 메서드 : 클래스 생성자 메서드
  • 클래스 변수 : 클래스에서 공유 되는 변수
  • 메서드 (Method)
  • 메서드 오버라이딩(Method Overriding) : 상속 받은 메서드를 재정의

그래서 생성자 메서드가 왜 필요한대?

-> 객체를 생성할 때 초기 상태를 설정하거나 필요한 초기화 작업을 수행하기 위해서이다.
1. 초기화 작업
2. 객체의 일관성 보장

  • 생성자 메서드를 통해 객체를 만들 때 반드시 필요한 초기화 작업을 강제 할 수 있다. 이를 통해 모든 객체가 생성될 때 일관된 상태를 갖도록 보장할 수 있다.
class BankAccount: 
	def __init__(self,balance = 0):
    if balance < 0:
    	raise ValueError("Balance cannot be negative")
    self.balance = balance
  1. 다른 메서드에 사용될 기본 상태 설정
  2. 코드 가독성 및 유지보수성 향상

init()에 대해 알아보자

iniitalize를 표현하는 구문 즉, 기본값을 설정하기라고 이해하자

Class Calc:
	def __init__(self,a,b):
    	Calc.x = a
    	Calc.y = b
    
    def plus(Calc):
    	return Calc.x - Calc.y
    
    def minus(Calc):
        return Calc.x - Calc.y

    def multiply(Calc):
        return Calc.x * Calc.y

    def divide(Calc):
        return Calc.x / Calc.y
   

init 에서 첫번째로 들어가는 변수면은 스스로를 지칭

i = Calc(2,3)

Calc(2,3)은 Calc 클래스에 숫자 2,3 입력된 무언가 -> 객체(object)
이때 객체 i를 Calc의 인스턴스라고 한다

self는 왜 필요한걸까?

실질적인 주요 변수인 a,b를 클래스 전체가 사용할 수 있도록 만들기 위해서

함수랑 차이는 뭘까?

클래스형과 함수형의 가장 큰 차이점은 동일한 함수를 다른 변수명으로 여러번 호출해야하는 경우가 생긴다면 클래스형은 함수 한 번으로 여러번 호출 가능
함수형은 호출시마다 함수를 계속 새로 호출해주어야 한다

마치며

아직도 init 함수와 self가 와닿지는 않는다 그래서
쓰다보면 완전히 이해하는 날이 오지 않을까
https://wikidocs.net/28 이것도 읽어봐야지

📎

https://www.youtube.com/watch?v=NsRp_Px3GKA
https://writingstudio.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%ACPython-%ED%81%B4%EB%9E%98%EC%8A%A4class-%EC%95%88-def-initself-%EC%99%80-self-%EB%93%B1%EC%9D%84-%EC%A0%9C%EB%8C%80%EB%A1%9C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0

0개의 댓글