티스토리 뷰

객체지향 프로그래밍

  • 여러개의 독립된 단위, 즉 '객체'들의 모임으로 파악하고자 하는 것
  • 유지보수가 간편하고 직관적인 코드 분석이 가능
  • 변수가 추가 될 가능성을 생각하여 함수를 이용하면 효율적임
  • 함수보다 더 효율적인 것은 '클래스'임

클래스

  • 객체를 조금 더 효율적으로 생성하기 위해 만들어진 구문

  • class 클래스 이름:               클래스 내용
  • class로 정의!
  • 인스턴스: 클래스로부터 만들어진 객체
  • 밑에 코드의 결과 값: print(a) -> 0 / print(x.a) -> 1
a = 0
class S1:
	a = 1
x = S1() #인스턴스
print(a)
print(x.a)
  • 클래스는 별도의 이름공간이 할당된다.

  • 인스턴스 또한 별도의 이름공간을 할당할 수 있음

메소드

    정의

  • (중요) 일반적인 함수와 똑같이 정의하지만 첫 번째 매개변수로 self를 사용!

  • self는 인스턴스 객체 자신의 레퍼런스를 지니고 있음 -> 각 인스턴스들은 self를 활용해 자신의 이름공간에 접근 가능하다.

    호출

  • 인스턴스 객체를 활용한 메소드 호출(self인자를 활용)

  • 클래스 객체를 이용한 메소드 호출
  • 밑에 코드의 결과 값: 첫번째 출력 값 10 / 두번째 출력 값 10
class MyClass:
	def class_set(self, v):
    	    self.value = v
        
        def class_get(self):
            return self.value
        
        
c = MyClass()
c.class_set('10')
print(c.class_get())

c = MyClass() # 인스턴스 생성
MyClass.class_set(c,'10')
print(MyClass.class_get(c))
  • 객체 내부의 메소드를 호출할 수 있음
  • 객체 내부 메소드를 호출할 때 주의해야할 점: self를 적어주지 않으면, 외부에서 해당 메소드를 찾게 된다.

    정적 메소드

  • 인스턴스 객체와 무관하게 클래스 이름공간에 존재하는 메소드

    - 클래스 이름을 이용하여 직접 호출 가능- 장식자 @staticmethod 사용
class D:
	@staticmethod
    	def spam(x, y): #self가 없음
    		print('static method', x, y)
 
 #인스턴스 객체 없이 클래스에서 직접 호출
 D.spam(1, 2)
 
 d = D()
 #인스턴스 객체를 통해서도 호출 가능
 d.spam(1, 2)

   클래스 멤버와 

  • 클래스 멤버: 클래스 이름공간에 생성, 모든 인스턴스에 공유
  • 인스턴스 멤버: 인스턴스 이름공간에 생성, 인스턴스마다 독립

     생성자와 소멸자

  • 생성자: 객체(인스턴스)가 생성될 때 자동으로 호출되는 함수

         - __init__으로 정의(__의 의미는 예약된 이름, __name__, __main__등)

         - 일반적으로 객체가 보유해야 할 변수나 자원들의 초기화를 하는 코드를 작성

 

  • 소멸자: 객체(인스턴스)가 소멸될 때 자동으로 호출되는 함수

         - __del__으로 정의,

         - 일반적으로 객체가 점유하고 있는 메모리나 기타 자원들의 해제를 하는 코드 작성

 

 

나만 알아볼 수 있는 요약ㅠㅠ

더보기

Class 클래스 이름:

          def 함수 이름(변수): => method

 

객체 < = 인스턴스 명 = 클래스()

실행할 때는 객체.메서드

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
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
글 보관함