class와 instance

codakcodak·2023년 10월 9일
0

OOP python

목록 보기
5/19
post-custom-banner

클래스의 인스턴스 접근

  • 클래스를 통해 인스턴스 변수에 접근할 수 있다.
  • 클래스를 통해 인스턴스 메서드에 접근할 수 있다.
class SelfTest:
    # 클래스 변수
    name = "test"

    def __init__(self, x):
        # 인스턴스 변수
        self.x = x

    @classmethod
    def func1(cls):
        print(f"cls:{cls}")
        print("func1")

    def func2(self):
        print(f"self:{self}")
        print("클래스 안의 self주소:", id(self))
        print("func2")


test_obj = SelfTest(18)
print(SelfTest(test_obj).x)
SelfTest.func2(test_obj)
<__main__.SelfTest object at 0x1053afaf0>
self:<__main__.SelfTest object at 0x1053afaf0>
클래스 안의 self주소: 4382718704
func2

인스턴스의 클래스 접근

  • 인스턴스를 통해 클래스 변수에 접근할 수 있다.
  • 인스턴스를 통해 클래스 메서드에 접근할 수 있다.
class SelfTest:
    # 클래스 변수
    name = "test"

    def __init__(self, x):
        # 인스턴스 변수
        self.x = x

    @classmethod
    def func1(cls):
        print(f"cls:{cls}")
        print("func1")

    def func2(self):
        print(f"self:{self}")
        print("클래스 안의 self주소:", id(self))
        print("func2")


test_obj = SelfTest(18)
test_obj.func1()
print(test_obj.name)
cls:<class '__main__.SelfTest'>
func1
test

  • 클래스에서 인스턴스 자원에 접근할 때 하나의 클래스가 여러개의 인스턴스를 가질 수 있기 때문에 특정 인스턴스를 지정해야한다.

  • 인스턴스에서는 내장변수를 통해 자신의 클래스에 접근할 수 있고 자신의 클래스는 한개 이기때문에 지정하지 않아도 접근이 가능하다.

profile
숲을 보는 코더
post-custom-banner

0개의 댓글