Mathlife
Mathlife의 학습 노트
Mathlife
전체 방문자
오늘
어제
  • 분류 전체보기
    • CS
      • 알고리즘
      • 자료구조
      • 운영체제
      • 네트워크
      • 데이터베이스
    • 프로그래밍 언어
      • Java
      • JavaScript
      • C·C++
      • Python
    • Backend
      • Spring
    • Frontend
      • HTML
      • CSS
    • Math
      • Linear Algebra
      • Calculus
    • AI
      • ML
      • DL
      • RL
    • Git

블로그 메뉴

  • 홈
  • 관리
  • 글쓰기
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Mathlife

Mathlife의 학습 노트

프로그래밍 언어/Python

파이썬 클래스/인스턴스 요약

2022. 3. 29. 20:16

인스턴스 메소드

- 데코레이터를 사용하지 않고 정의

- 인스턴스를 통해서만 호출 가능 (e.g. person = Person(); person.instance_method())

- self.func() : 인스턴스 메소드 접근

- self.value : 인스턴스 속성 접근

- self.func() or 클래스명.func() : 클래스 메소드 접근 (가독성을 위해 후자가 권장됨)

- self.value or 클래스명.value : 클래스 속성 접근 (가독성을 위해 후자가 권장됨)

정적 메소드

- 데코레이터 @staticmethod 를 사용해 정의

- 인스턴스 없이 호출 가능 (e.g. Person.static_method())

- 클래스명.func() : 클래스/정적 메소드 접근

- 클래스명.value : 클래스 속성 접근

- 자식 클래스를 통해 부모 클래스에서 상속받은 정적 메소드를 실행할 경우 

 

클래스 메소드
- 데코레이터 @classmethod 를 사용해 정의

- 인스턴스 없이 호출 가능 (e.g. Person.class_method())

- cls.func() : 클래스/정적 메소드 접근

- cls.value : 클래스 속성 접근

- 자식 클래스를 통해 부모 클래스에서 상속받은 클래스 메소드를 실행할 경우 

 

정적 메소드와 클래스 메소드의 차이 ( 참고 : https://nirsa.tistory.com/113 )

 

예를 들어, 자식 클래스 Child를 통해 부모 클래스 Parent에서 상속 정적/클래스 메소드를 각각 실행한다고 해보자.

 

정적 메소드 : 호출된 클래스가 무엇인지 확인할 수 없음. Child와 관련된 기능을 쓰고 싶다면 코드에 Child를 명시.

 

클래스 메소드 : cls가 호출된 클래스 자체를 의미. 이 경우 cls == Child 이므로 cls.func(), cls.value 로 Child와 관련된 기능 사용 가능

 

결론

 

클래스 호출과 관련이 있다면 클래스 메소드로, 정적(외부 영향을 받지 않는) 기능 구현이 목적이라면 정적 메소드를 사용하자.

'프로그래밍 언어 > Python' 카테고리의 다른 글

파이썬 any, all  (0) 2022.06.10
파이썬 진법 변환  (0) 2022.06.09
파이썬 문자열  (0) 2022.06.03
파이썬 floor, ceil 메소드 구현  (0) 2022.03.31
파이썬 클래스 상속  (0) 2022.03.29
    '프로그래밍 언어/Python' 카테고리의 다른 글
    • 파이썬 진법 변환
    • 파이썬 문자열
    • 파이썬 floor, ceil 메소드 구현
    • 파이썬 클래스 상속
    Mathlife
    Mathlife

    티스토리툴바