ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 인스턴스메서드, 클래스메서드, 스테틱메서드 + 바인딩에 대해
    컴퓨터 2019. 12. 24. 19:46
    class Student:
        def ins_method(self, name):
            self.name = name
    
            # 첫번째 인자로 인스턴스를 받기 때문에 메서드 안에서 인스턴스를 사용 할 수 있다.
    
        @classmethod
        def cls_method(cls, age):
            cls.age = age
    
            # 첫번째 인자로 클래스를 받기 때문에 클래스를 메서드 내에서 사용할 수 있다.
    
        @staticmethod
        def sta_method(nation):
            print(nation)
    
        def foo(self):
            print("this is foo")
            print(self)
    
        def foo2():
            print("this is foo2")
    Student         # 클래스
    Student()       # 인스턴스
    a = Student()   # 인스턴스
    인스턴스 메소드
    
    a = Student()
    b = Student()
    
    a.ins_method("James")
    b.ins_method("Timmy")
    
    print(a.name)
    print(b.name)
    
    
    output:
    James
    Timmy
    
    # 인스턴스 메소드는 인스턴스 별로 구분이 가능하도록 한다.
    
    print(Student().name)
    print(Student.name)
    
    output:
    AttributeError: 'Student' object has no attribute 'name'
    
    # 인스턴스에서의 수정은 클래스에 영향을 미치지 않는다.
    Student().ins_method("Amy")
    
    print(Student().name)
    
    # 인스턴스 메소드를 인스턴스를 변수에 바인딩하지 않은 채로 사용해 본 결과 메소드는
    # 사용이 되나 인스턴스 변수에 접근할 방법이 없다. 바인딩을 하는 변수로 접근해야 하는데 그게 없으니
    # 특정이 안되서 그러는 것 같다. 모호성
    인스턴스.인스턴스메소드()
    자동으로 첫번째 인자를 인스턴스로 받음.
    
    클래스.인스턴스메소드(클래스/인스턴스)
    인자로 클래스를 넣어준 경우 클래스 단위로 영향을 준다.
    
    클래스/인스턴스.클래스메소드()
    자동으로 첫번째 인자를 클래스로 받고 어떤식으로 접근해도 클래스에 접근하게 됨
    
    클래스/인스턴스.스태틱메소드()   # 데코레이터로 만든
    인스턴스를 통해서도 접근 가능한 메소드. 클래스를 통해서 관련성 있는 함수들을
    묶기 위해 사용함.
    
    클래스.스태틱메소드()	# 클래스 안에 썼지만 self 없이 빈괄호로 만든 메소드
    클래스를 통해서만 접근 가능함, 앞에 인스턴스를 쓸 경우 인스턴스가 자동으로
    인자로 들어가서 오류가 나온다.

    '컴퓨터' 카테고리의 다른 글

    인터넷 용어 정리  (0) 2020.02.13
    언더스코어 "_" 의미  (0) 2019.12.29
    self, 클래스, 인스턴스  (0) 2019.12.16
    변수, 인스턴스, 클래스의 관계  (0) 2019.12.13
    이벤트 루프 실행 순서 + sleep  (0) 2019.12.13

    댓글

Designed by Tistory.