브렌쏭의 Veritas_Garage

[우리FISA] Python Class 본문

[Project_하다]/[Project_공부]

[우리FISA] Python Class

브렌쏭 2024. 7. 16. 12:12

'윈도우키' + ';' or '윈도우키' + '.' 으로 로그에 이모지를 넣으면 보기 쉽다.
'윈도우키' + 'v' 로 클립보드에 있는 내용을 확인 가능

Python Class

  • 클래스는 객체를 만들기 위한 틀이다.
class 클래스이름:
    def __init__(self, 매개변수1, 매개변수2):
        self.속성1 = 매개변수1
        self.속성2 = 매개변수2

Static Method & Class Method

  • 클래스 메서드는 클래스 변수를 사용할 수 있다.
  • 정적 메서드는 클래스 변수를 사용할 수 없다.
class 클래스이름:
    @staticmethod
    def 메서드이름(매개변수1, 매개변수2):
        pass

    @classmethod
    def 메서드이름(cls, 매개변수1, 매개변수2):
        pass
  • 정적 메서드는 클래스나 인스턴스의 상태를 변화시키지 않는 메서드를 만들 때 사용한다.

Encapsulation :: 캡슐화

  • 클래스를 만들 때 속성과 메서드를 캡슐화하여 외부에서 속성을 직접 변경하지 못하도록 한다.
  • 은닉성 : 속성을 외부에서 직접 변경하지 못하도록 하는 것
  • 캡슐화 : 속성과 메서드를 하나로 묶어 외부에서 속성을 변경하지 못하도록 하는 것
  • _ : 속성이나 메서드 이름 앞에 언더바를 하나 붙이면 외부에서 접근할 수 없다.
class 클래스이름:
    def __init__(self, 매개변수1, 매개변수2):
        self._속성1 = 매개변수1
        self._속성2 = 매개변수2

    def _메서드이름(self):
        pass

Polymorphism :: 다형성

  • 다형성은 상속 관계에 있는 클래스에서 같은 이름의 메서드를 호출할 때 각각 다르게 동작하도록 하는 것이다.
class 부모클래스이름:
    def 메서드이름(self):
        pass

class 자식클래스이름(부모클래스이름):
    def 메서드이름(self):
        pass

getter & setter

  • getter : 속성값을 가져오는 메서드
  • setter : 속성값을 설정하는 메서드
class 클래스이름:
    def __init__(self, 매개변수1, 매개변수2):
        self.__속성1 = 매개변수1
        self.__속성2 = 매개변수2

    def get_속성1(self):
        return self.__속성1

    def set_속성1(self, 매개변수):
        self.__속성1 = 매개변수

property : getter와 setter를 사용할 때 사용하는 데코레이터

class 클래스이름:
    def __init__(self, 매개변수1, 매개변수2):
        self.__속성1 = 매개변수1
        self.__속성2 = 매개변수2

    @property
    def 속성1(self):
        return self.__속성1

    @속성1.setter
    def 속성1(self, 매개변수):
        self.__속성1 = 매개변수

Overriding :: 오버라이딩

  • 부모 클래스의 메서드를 자식 클래스에서 재정의하는 것
class 부모클래스이름:
    def 메서드이름(self):
        pass

class 자식클래스이름(부모클래스이름):
    def 메서드이름(self):
        pass

Inheritance :: 상속

  • 상속은 부모 클래스의 속성과 메서드를 그대로 이어받아 사용할 수 있다.
class 부모클래스이름:
    def __init__(self, 매개변수1, 매개변수2):
        self.속성1 = 매개변수1
        self.속성2 = 매개변수2

    def 메서드이름(self):
        pass

class 자식클래스이름(부모클래스이름):
    def __init__(self, 매개변수1, 매개변수2, 매개변수3):
        # self 가 없음
        super().__init__(매개변수1, 매개변수2)
        self.속성3 = 매개변수3

    def 메서드이름(self):
        pass

Mangling: 속성의 이름을 변경하는 기능

  • 여러 클래스에서 정의된 같은 이름의 속성들이 서로 충돌하지 않도록 한다
  • 속성 이름 앞에 __를 붙이면 속성 이름이 _클래스이름__속성이름으로 변경된다.
class 클래스이름:
    def __init__(self, 매개변수1, 매개변수2):
        self.__속성1 = 매개변수1
        self.__속성2 = 매개변수2

    def __메서드이름(self):
        pass

super(): 부모 클래스의 메서드를 호출할 때 사용

다중 상속

  • 다중 상속은 여러 클래스를 상속받는 것이다.
class 클래스이름(부모클래스1, 부모클래스2):
    pass

실제로는 사용하지 않는 것을 권장

Comments