ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Python 문법 기초 24 - class 포함관계(1)
    Python 2022. 10. 22. 17:00

     

    # 클래스의 이해
    
    kor = 100 # 전역 변수(소속이 모듈)
    
    def abc(): # 함수(소속이 모듈)
        a = 10 # 지역변수(소속이 abc 함수)
        print('함수')
    
    class MyClass: # 클래스(소속이 모듈)
        kor = 90  # 멤버변수(소속이 MyClass 클래스 소속)
        
        """
        def __init__(self):
            pass
        """
        
        def abc(self):
            print('메소드')
            
        def show(self):
            # kor = 80 # 지역변수(소속은 show 메소드)
            print(self.kor)
            print(kor)
            self.abc() # 메소드를 콜
            abc() # 함수를 콜
            
    my = MyClass()
    my.show()
    
    
    <console>
    90
    100
    메소드
    함수

    self 는 주소를 의미하며 self.abc() 를 입력하면 my의 주소를 가져오며 my의 abc 메소드를 호출한다.

    self를 입력하지 않고 abc()만 입력하면 전역함수인 abc()가 호출된다. kor도 마찮가지이다.

     

     

    class : 새로운 타입을 생성

    # class : 새로운 타입을 생성
    print('가수 관련 클래스')
    
    class singerType:
        title_song = '화이팅 코리아'
        
        def sing(self):
            msg = '노래는 '
            print(msg, self.title_song + ' 랄랄라 ~~~')

     

    # 가수 한 명을 탄생
    
    # import pack2.class4
    from pack2.class4 import singerType
    
    def process():
        # youngwoung = pack2.class4.singerType()
        youngwoung = singerType()
        print('영웅의 타이틀 송 : ', youngwoung.title_song)
        youngwoung.sing()
    
    def process2():
        bts = singerType() # 생성자 호출(실행해라)
        # bts = singerType # 주소를 호출
        bts.sing()
        bts.title_song = '최고의 순간은 아직'
        bts.sing()
        bts.co = 'HIVE'
        print('소속사 : ', bts.co)
        print()
        blackpink = singerType()
        blackpink.sing()
        blackpink.title_song = '셧다운'
        blackpink.sing()
    
    if __name__ == '__main__':
        process()
        print('--------')
        process2()
    
    
    <console>
    가수 관련 클래스
    영웅의 타이틀 송 :  화이팅 코리아
    노래는  화이팅 코리아 랄랄라 ~~~
    --------
    노래는  화이팅 코리아 랄랄라 ~~~
    노래는  최고의 순간은 아직 랄랄라 ~~~
    소속사 :  HIVE
    
    노래는  화이팅 코리아 랄랄라 ~~~
    노래는  셧다운 랄랄라 ~~~

    class를 생성한다. 다른 모듈 파일에서 import 해서 사용 가능하다.

    생성자를 호출할때마다 각기 다른 고유의 주소를 가진 객체들이 생성되고, class 의 값들은 생성된 객체의 값마다 다를 수 있다. 또한 원본 class에 없는 변수도 추가 가능하다. 다만 메소드는 추가 불가능하다.

     

     

    예제 1)

    # 클래스는 다른 클래스를 불러다 사용 가능
    # 클래스의 포함관계(has a)
    
    class Pohamhandle: # 핸들이 필요한 어떤 클래스에서든 호출 가능
        quantity = 0 # 회전량
        
        def LeftTurn(self, quantity):
            self.quantity = quantity
            return '좌회전'
        
        def RightTurn(self, quantity):
            self.quantity = quantity
            return '우회전'
        
        # ...
        
    # 자동차를 위한 여러 부품을 별도의 클래스로 제작 : 생략
    # 핸들이 필요할 때마다 만들어 둔 클래스를 가져다 사용
    # 완성제품 클래스
    class PohamCar:
        turnShowMessage = '정지'
        
        def __init__(self, ownerName):
            self.ownerName = ownerName
            self.handle = Pohamhandle() # 클래스의 포함
            
        def TurnHandle(self, q):
            if q > 0:
                self.turnShowMessage = self.handle.RightTurn(q)
            elif q < 0:
                self.turnShowMessage = self.handle.LeftTurn(q)
            elif q == 0:
                self.turnShowMessage = '직진'
                self.handle.quantity = 0
                
    if __name__ == '__main__':
        tom = PohamCar('톰')
        tom.TurnHandle(10)
        print(tom.ownerName + '의 회전량은 ' + tom.turnShowMessage + str(tom.handle.quantity))
        tom.TurnHandle(0)
        print(tom.ownerName + '의 회전량은 ' + tom.turnShowMessage + str(tom.handle.quantity))
        tom.TurnHandle(-1)
        print(tom.ownerName + '의 회전량은 ' + tom.turnShowMessage + str(tom.handle.quantity))

     

    댓글

Designed by Tistory.