본문 바로가기
개발일지/Python

파이썬 [class 기초원리] - 정리판1 class(클래스)기본

by 개발에정착하고싶다 2022. 5. 20.
320x100
# 객체지향 프로그래밍
# 객체 사용의 장점은 코드 재사용, 모듈화에 좋다고 한다.

# class의 첫글자는 대문자가 관례
# 이건 클래스라고 부른다.
# 클래스는 "속성"과 "객체"라는 이름의 "기능" 이렇게 크게 2가지 요소로 구성된다.

# 클래스는 처음 만들때 뼈대를 만들어놓고, 사용을하면서 필요한 부분을 덧붙여가는 식으로
# 만든다고 생각하면 된다.
# 따라서 init의 부분에 오는 속성은 반드시 자주변동되지 않으며, 범용적으로 쓰일때 필요한요소
# 정도로 생각하면 좀 더 도움이 되는것 같다.

class Car:

    # 여기서 self는 상위클래스 Car를 의미한다.
    # 여기는 속성.
    # 사실 좀 디데일하게 생각해보면 뭐가 속성이고 뭐가 객체인지 구분은 불분명하나
    # 속성은 좀 더 외관상 치중된 느낌이고
    # 객체(기능)은 뭔가 말그대로 내재된 기능에 치중된 느낌이다.
    def __init__(self,col, len):
        self.color = col
        self.length = len

    # 여기서부터가 "객체"라고 부르는 함수인것같다.
    # 요컨데 객체는 "기능"에 대한 정의가 들어간다.
    # 자동차면 움직이기, 멈추기, 속력올리기 등
    def doStop(self):
        print('stop!')

    def doStart(self):
        print('start!')

    def printCarInfo(self):
        print(f'self.color: {self.color}')
        print(f'self.length: {self.length}')

##############################
# 위의 설정된 class를 활용할때

# Car(원소1, 원소2)
# 이렇게 넣어주게 되면 Car class 가장 최 상단에 있는
# __init__메소드가 자동으로 호출이되며, 원소1과 원소2는 해당 자리를 찾아간다
# 그리고 이걸 범용적으로 활용하는 방식은 보통 변수에 선언을 해준다.

car1 = Car('red',2000)
car2 = Car('white',1800)
# 이런식으로
# 이렇게 되면 car1, car2가 각각의 Car class를 머금고 있는 오브젝트1, 오브젝트2가 되는거다

car1.printCarInfo()
car2.printCarInfo()

# 오브젝트를 설정해주었다면 해당기능을 사용하기 위해서는
# 오브젝트.해당클래스 안에 내장되어있는 함수
# 이런식으로 활용해준다.
# 참고로 class 내장 함수가 (self)라고 되어있다면 그냥 ()라고 해줘도 작동이 되지만
# (self,n1,n2)
# 라고 되어있다면 n1,n2에 해당하는 추가 원소값도 넣어줘야한다.
300x250