ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 14. Class
    공부합시다!/python 2023. 2. 10. 00:15
    728x90

    함수의 모음 Class

    Class를 사용함으로서 함수들의 모아서 재사용할 수 있게 되었지요!

     

    # 1. 클래스 선언 및 self의 이해
    #  1.1. 클래스 선언
    #  1.2. 클래스 네임스페이스 self
    #  1.3. 클래스, 인스턴스 변수
    #  1.4. self
    
    # 선언 : 첫글자 대문자, 단어연결시 첫글자 대문자
    '''
    class 클래스명:
      함수
      함수
      함수
    '''
    
    # 예제 1 pass 예외처리됨
    
    class UserInfo:
      def __init__(self, name):
        self.name = name
      def user_info_p(self):
        print("NAME: ", self.name)
    
    user1 = UserInfo("Kim")
    print(user1.name)
    user1.user_info_p()
    user2 = UserInfo("Park")
    print(user2.name)
    user2.user_info_p()
    
    #메모리 번지 확인
    print(id(user1))
    print(id(user2))
    
    #namespace 출력
    print(user1.__dict__)
    print(user2.__dict__)
    
    
    # 클래스, 인스턴스 차이 중요
    # 네임스페이스: 객체를 인스턴스화 할 때 저장된 공간
    # 클래스 변수: 직접 사용가능, 객체보다 먼저 생성
    # 인스턴스 변수: 객체마다 별도로 존재
    
    # 예제2
    # self의 이해
    
    class SelfTest:
      def function1():
        print('function1 called')
      def function2(self):
        print(id(self))
        print('function2 called')
    
    self_test = SelfTest()
    #self_test.function1()
    self_test.function2()    #인스턴스 생성해서 메쏘드 호출
    SelfTest.function1()
    SelfTest.function2(self_test) # 클래스에서 직접 호출
    
    print(id(self_test))
    
    # 예제 3
    # 클래스 변수
    
    class WareHouse:
      stock_num = 0
      def __init__(self, name):
        self.name = name
        WareHouse.stock_num += 1
      def __del__(self):
        WareHouse.stock_num -= 1
    
    user1 = WareHouse('Kim')
    user2 = WareHouse('Park')
    user3 = WareHouse('Lee')
    
    print(user1.__dict__)
    print(user2.__dict__)
    print(user3.__dict__)
    print(WareHouse.__dict__) # 클래스 네임스페이스, 클래스 변수 (공유)
    
    print(user1.name)
    print(user2.name)
    print(user3.name)
    
    print(user1.stock_num)
    
    del user1
    
    print(user2.stock_num)
    print(user3.stock_num)

    728x90

    '공부합시다! > python' 카테고리의 다른 글

    16. Module과 Package  (0) 2023.02.14
    15. Class 상속  (0) 2023.02.13
    13. DB: DB data 다루기 - 2  (0) 2023.02.08
    13. DB: DB data 다루기 - 1  (0) 2023.02.07
    12. DB: database 및 table 다루기  (0) 2023.02.06
Designed by Tistory.