달력

11

« 2019/11 »

  •  
  •  
  •  
  •  
  •  
  • 1
  • 2
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30



 

 

멤버 메서드 종류

파이썬에서 메서드는 크게 인스턴스 메서드(instance method), 정적 메서드(static method), 클래스 메서드(class method) 있습니다.

·         인스턴스 메서드(instance method)

·         정적 메서드(static method)

·         클래스 메서드(class method)

 

 

 

 

 

인스턴스 메서드(instance method)

 

·         일반 함수와 다른 점은 첫번째 인수로 self 사용합니다.  (관례적으로 self라는 이름을 사용합니다)

·         self 인스턴스 객체 자신의 레퍼런스를 지니고 있습니다. 인스턴스들은 self 이용하여 자신의 이름 공간에 접근합니다.

·         가장 흔히 쓰이는 인스턴스 메서드는 인스턴스 변수에 엑세스할 있도록 메서드의 첫번째 파라미터에 항상 객체 자신을 의미하는 "self"라는 파라미터를 갖습니다.

 

·         인스턴스 메서드는 여러 파라미터를 가질 있지만, 첫번째 파라미터는 항상 self 갖습니다.

 

·         인스턴스 메서드는 "객체변수.메서드명()" 같이 호출할 있습니다.

 

class MyClass:

    def set(self, v):

        self.value = v

    def get(self):

        return self.value

 

 

 

 

 

정적 메서드(static method)

·         인스턴스 객체와 무관하게 클래스 이름 공간에 존재하는 메소드로서 클래스 이름을 이용하여 직접 호출할 있는 메소드입니다.

·         인스턴스 객체를 참조하는 self 인자가 필요하지 않습니다.

·         인스턴스 메서드가 객체의 인스턴스 필드를 self 통해 엑세스할 있는 반면, 정적 메서드는 이러한 self 파라미터를 갖지 않고 인스턴스 변수에 엑세스할 없습니다. 따라서, 정적 메서드는 보통 객체 필드와 독립적이지만 로직상 클래스내에 포함되는 메서드에 사용됩니다.

·         정적 메소드는 해당 클래스의 인스턴스를 통해서도 호출 가능하지만 권장하지 않습니다.

·         정적 메서드는 메서드 앞에 @staticmethod 라는 장식자(Decorator) 표시하여 해당 메서드가 정적 메서드임을 표시합니다.

 

 

정적(static) 메서드 형식

<호출할 메소드 이름> = staticmethod(클래스내 정의한 메소드 이름)

@staticmethod

def 정적메소드명(인자1, 인자2, ...): # self 키워드가 없다.

 

 

 

 

 

 

 

 

클래스 메서드(class method)

·         클래스 영역의 데이터에 직접 접근할 있는 메소드입니다.

·         인스턴스 객체와 무관하게 클래스 이름 공간에 존재하는 메소드로서 클래스 이름을 이용하여 호출하며 인수로 클래스 객체를 자동으로 받는 메소드입니다.

·         암시적으로 인자로 클래스 객체가 전달됩니다.

·         해당 클래스의 인스턴스를 통해서도 호출 가능합니다.

·         클래스 메서드는 메서드 앞에 @classmethod 라는장식자(Decorator) 표시하여 해당 메서드가 클래스 메서드임을 표시합니다.

 

 

 

클래스 메서드와 정적 메서드

·         클래스 메서드는 정적 메서드와 비슷한데, 객체 인스턴스를 의미하는 self 대신 cls 라는 클래스를 의미하는 파라미터를 전달받습니다. 정적 메서드는 cls 파라미터를 전달받지 않습니다. 클래스 메서드는 이렇게 전달받은 cls 파라미터를 통해 클래스 변수 등을 엑세스할 있습니다.

·         일반적으로 인스턴스 데이터를 엑세스 필요가 없는 경우 클래스 메서드나 정적 메서드를 사용하는데, 이때 보통 클래스 변수를 엑세스할 필요가 있을 때는 클래스 메서드를, 이를 엑세스할 필요가 없을 때는 정적 메서드를 사용합니다.

 

클래스 메소드

정적 메소드

@classmethod

cls

@staticmethod

인스턴스 데이터를 엑세스 필요가 없는 경우 사용

인스턴스 데이터를 엑세스 필요가 없는 경우 사용

클래스 변수를 엑세스할 필요가 있는 경우

클래스 변수를 엑세스할 필요가 없는 경우

 

 

cls

self

클래스 자체

객체 자신

 

 

 

 

클래스(class) 메서드 형식

<호출할 메소드 이름> = classmethod(클래스내 정의한 메소드 이름)

@classmethod

def 클래스메소드명(self, 인자1, ...):

 

 


'Development > Python' 카테고리의 다른 글

지도 API 사용 방법  (0) 2019.11.10
실제 행렬을 사용한 곱셈의 예  (0) 2019.11.09
멤버 메서드 종류  (0) 2019.11.09
self  (0) 2019.11.08
else 블록  (0) 2019.11.07
plt.imshow()  (0) 2019.11.06
Posted by codedragon codedragon

댓글을 달아 주세요