티스토리 뷰

1. 클래스란?

- 객체 지향 프로그래밍(OOP)의 기본 단위로, 객체(obejct)를 생성하기 위한 템플릿(template)

- 변수(속성)와 함수(메서드)를 모아둔 틀

class 계산기:
    # 생성자 메서드 (초기화)
    def __init__(self, 속성1, 속성2):
        self.속성1 = 속성1
        self.속성2 = 속성2

    # 메서드
    def 더하기(self):
        return self.속성1 + self.속성2
        
        
    내_계산기 = 계산기(4,2)
    친구_계산기 = 계산기(3,5)

 

2. Class와 Instance

- Class(계산기)로 객체(내_계산기)를 만들면 그 "관계"를 말할 때, 내_계산기(객체)는 계산기(클래스)의 "인스턴스"라 함

 

3. self

- 생성된 객체 자기 자신, 여기선 "내_계산기"가 self가 된다. 자기 자신이 들어가기 때문에 파라미터에 입력은 하지 않음

내_계산기 = 계산기(4,2)
내_계산기.더하기()

 

4. __init__ : 생성자

- 생성자란? 객체가 생성될때 자동으로 호출되는 메서드

*  __init__이 없다면?

class 계산기:
    def setdata(self, 속성1, 속성2):
        self.속성1 = 속성1
        self.속성2 = 속성2

    # 메서드
    def 더하기(self):
        return self.속성1 + self.속성2

 

 

- 파라미터를 객체 생성 "후" 입력해야 하고, 메서드들은 속성입력 함수를 사용한 뒤에 쓸 수 있다

=> 객체에 초기값을 설정해야 하는 경우에는 매우 불편하기 때문에 생성자(__init__)를 사용해야 한다.

- class에는 파라미터를 넣을 수 없기 때문, class가 아니라 setdata함수에 넣어야 함

계산기1 = 계산기(4,2) # 에러남, class에 파라미터를 넣을 수 없기 때문
계산기2 = 계산기()
계산기2.더하기(4,2) # 에러남, 더하기에는 self만 지정되어 있어 setdata를 먼저실행해야함

계산기3= 계산기()
계산기3.setdata(4,2)
계산기3.더하기() # 6

- 그냥 setdata를 "이름만" __init__으로 바꿔주면, 객체 생성시 해당 내용이 자동으로 호출되어 객체생성과 setdata를 동시에 할 수 있다.

 

5. 클래스의 상속

- 다른 클래스의 기능을 사용 할 수 있게 해줌, 메서드를 새로 정의하지 않았지만, 상속받은 클래스의 메서드를 쓸 수 있다.

class 멋진계산기(계산기):
    pass


new_계산기 = 멋진계산기(3,5)
new_계산기.더하기() # 8

* pass: 아무것도 수행하지 않는 문법, 임시로 코드를 작성할때 주로 사용한다.

 

6.메서드 오버라이딩

- 부모 클래스에 있는 메서드를 동일한 이름으로 다시 만드는 것(기존의 메서드를 수정하고 싶을 때)

class 멋진계산기(계산기):
    def 더하기(self):
        return f"{self.속성1}과 {self.속성2}를 더한 값은{self.속성1 + self.속성2}입니다"


new_계산기 = 멋진계산기(3,5)
new_계산기.더하기() # '3과 5를 더한 값은8입니다'

 

7. 클래스 변수

- 클래스.속성 = 바꿀거, 이렇게 직접 지정하면 클래스로 생성된 객체들의 변수도 같이 바뀐다.

- 객체의 변수를 바꾸면 객체 안에서만 지속되고, 클래스는 변하지 않는다

- 객체 변수를 바꾼 적이 있으면, 클래스 변수를 바꿔도 객체 변수는 바뀌지 않는다

class Family:
    lastname = "김"

a = Family()
b = Family()

Family.lastname # 김
a.lastname # 김
b.lastname # 김

a.lastname = "최"
a.lastname # 최
b.lastname # 김

Family.lastname = "박"
Family.lastname # 박
a.lastname # 최
b.lastname # 박

 

 

※ 참고자료: 점프 투 파이썬[박응용 지음]

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함