본문 바로가기
Python

[Python] class 만들기.

by ds31x 2024. 4. 14.

일반적인 class 만드는 법

일반적으로 class 만드는 법은 다음 코드를 참고할 것.

class CustomClass (SuperClass0, SuperClass1) : # class 정의 헤더. 클래스의 이름과 부모를 지정.

    # class attributes
    class_variable0 = None # class가 가지는 attribute를 assignment로 생성.

    @classmethod # @classmethod 데코레이터를 통해 class method를 정의
    def class_method(cls, *args): # class method 정의 (필요하지 않은 경우가 많음)
        # 첫번째 파라메터 cls에 class method를 호출하는 class객체가 할당됨.
        print(f'{cls.class_variable0=}')


    # instance attributes
    def __init__(self, *args):
        # 생성자. 반드시 만들고, 여기서 instance attribute를 할당으로 추가함.
        # self 는 생성되는 instance를 가르킴.
        super().__init__()             # 부모 클래스의 생성자는 거의 대부분 꼭 호출해줘야함. 
        self.instance_variable0 = None # instance attribute를 assignment로 생성.
        self.instance_variable1 = None # instance attribute를 assignment로 생성.

    def instance_method(self, *args): # instance method 정의.
        print(type(self).class_variable0)  # class variable에 접근 가능.
        print(CustomClass.class_variable0) # class이름으로 class variable에 접근.
        print(self.instance_variable0)     # instance variable에 접근 가능.


    # static attributes
    @staticmethod # @staticmethod 데코레이터를 통해 static method를 정의
    def static_method(): # static method 정의  (필요하지 않은 경우가 많음)
        # instance의 variable을 바꾸지 않는 pure function 만드는데 사용됨.
        # class method로 거의 대부분 대처 가능하므로 많이 사용되지 않음.
        print(CustomClass.class_variable0)          # class이름으로 class variable에 접근.
  • 모든 instance들이 공유해야하는 변수가 존재한다면, class attribute로 만들 것.
  • 해당 class attribute에만 접근하는 어떤 처리가 필요하고, 
    굳이 instance의 상태에 상관없을 경우 class methods로 만들 것.
  • class attributes나 instance attributes 모두 동적으로 추가가능하지만, 
    위의 예제처럼 추가하는 것을 권함 (동적 속성 추가는 피하는게 좋음).

참고자료

동적 속성 추가관련 자료.

https://dsaint31.me/mkdocs_site/python/oop/oop_3_01_python_class/#class-attribute

 

BME228

Python에서의 Class Class 도 Python에서는 instance임. 다음이 Python에서 Class와 Object의 실체를 말해준다. 모든 Object는 Object를 super-class로 가진다. 모든 Class는 type이라는 Class의 instance이다. 우리가 Samp1 이

dsaint31.me

 

instance methods, class methods and static methods 에 대한 자료.

2023.08.20 - [Python] - [Python] instance methods, class methods, and static methods

 

[Python] instance methods, class methods, and static methods

Instance Methods instance를 통해 접근(=호출)되는 methods를 가르킴. 일반적인 methods가 바로 instance methods임. method와 function의 차이점 중 하나로 애기되는 "정의될 때 첫번째 parameter가 self이면 method "라는

ds31x.tistory.com

 

decorator에 대한 자료

2023.08.18 - [Python] - [Python] Decorator

 

[Python] Decorator

Python이 제공하는 Decorator는 기존의 function을 수정하지 않으면서 특정 처리를 추가할 수 있게 해주는 도구라고 할 수 있다. Decorate의 "꾸미다"라는 의미에 맞게 기존 function을 꾸며주는 기능을 제공

ds31x.tistory.com