본문 바로가기
IT 공부/Python

Python 클래스(1) 클래스, 인스턴스 메서드/ 멤버, 인스턴스 변

by 쭈잇 2019. 6. 17.

Contents

    반응형
    # class Point
    
    
    class Point:
        count_of_instance = 1000
    
        def setx(self, x):
            self.x = x
    
        def sety(self, y):
            self.y = y
    
        def getx(self):
            return self.x
    
        def gety(self):
            return self.y
    
        def show(self):
            print(f'점[{self.x}, {self.y}]를 그렸습니다.')
    
        @classmethod
        def class_method(cls):
            return cls.count_of_instance
    
        @staticmethod
        def static_method():
            print('static method clalled')

    > self라는 자기자신을 넣어줘야함 

     

    | bound instance Mehtod 호출

    from point import Point
    
    
    def test_bound_instnace_method():
        p = Point()
        p.setx(10)
        p.sety(20)
        p.show()
     
    
    def main():
         test_bound_instnace_method()
        #test_unbound_class_method()
      
    
    
    if __name__ == '__main__':
        main()

    | unbound class method 호출

    (보통 unboud 안씀)

    from point import Point
     
    def test_unbound_class_method():
        p = Point()
        Point.setx(p, 10)
        Point.sety(p, 20)
        Point.show(p)
     
    
    def main():
        # test_bound_instnace_method()
        test_unbound_class_method()
        # test_other_method()
    
    
    if __name__ == '__main__':
        main()

     

    인스턴스 메서드 / 정적 메서드 / 클래스 메서드

     

    인스턴스 메서드

    : 메서드 내부에서 self (인스턴스 객체 자신)을 참조하기 위해 메서드 파라미터로 받게 된다

    첫번째 파라미터를 받지 않게 되면, 인스턴스 객체에서의 호출은 실패한다!

     

     

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

    : 인스턴스 객체의 멤버변수에 접근할 필요가 없는 메서드

     

    정적 메서드와 클래스메서드의 차이점은 클래스멤버에 접근과 관련이 있다  

     

    클래스 메서드는 정적메서드와 달리 클래스멤버에 접근하기 위해 클래스 객체 참조값을 첫번쨰 파라미터로 받을 수 있는 메서드다. 첫번째 파라미터 변수의 이름은 임의로 정할 수 있으나 cls라는 이름을 사용한다

     

        @classmethod
        def class_method(cls):
            return cls.count_of_instance
    
        @staticmethod
        def static_method():
            print('static method clalled')​

     

    | 클래스 멤버와 인스턴스 멤버

     

     

    클래스 멤버는 모든 인스턴스 객체들에서 공유됨

    인스턴스 멤버는 각각의 인스턴스 객체에서만 참

     

     

    반응형

    'IT 공부 > Python' 카테고리의 다른 글

    Python 크롤링, 동적으로 가져오기 selenium  (0) 2019.06.19
    Python 크롤링 연습  (0) 2019.06.18
    Python 파일입출력 예제  (0) 2019.06.17
    Python 모듈, import  (0) 2019.06.17
    Python 기초 str, tuple 등..  (0) 2019.06.13