IT/프로그래밍

[파이썬] 파이썬 클래스와 객체 [패스트 캠퍼스 챌린지 32일]

뜻밖의 행복 2022. 2. 24. 23:36
반응형

안녕하세요? 뜻밖의 행운입니다.

오늘로서 도전 32일차 

 

사실 파이썬을 공부하면서 무엇을 만들까 고민을 많이 했습니다.

더구나 이강의는 웹개발이라서 

요즘 보니 퀀트 투자에 크롤링을 파이썬을 써서 만들면

괜찮겠다 싶은 생각이 들었습니다.

그러니까 공부 의지도 더 생기는듯 하더라구요 ㅎ

 

오늘은 클래스에 대해 다시 복습하였습니다. 

이런식의 강의 배열 좋습니다. 

 

중요한 개념인데 이제는 까먹을 때가 되었으니 심화 과정겸 

이렇게 다시 한번 또 강의를 해서 기억이 오래가게끔

 

챕터 4까지 왔습니다. 힘내자!

 

이것이 오늘 배운 예제 입니다.

 

# Unit 클래스
class Unit:
    """
    속성 : 이름, 체력, 방어막, 공격력
    """
    # 생성자 (constructor)
    # 객체를 생성할 때 호출되는 메서드
    def __init__(self, name, hp, move, demage):
        self.name = name # self는 객체 자기 자신을 의미
        self.hp = hp
        self.move = move
        self.demage = demage
        print(f"[{self.name}](이)가 생성 되었습니다.")

    # 객체를 출력할 때 호출되는 메서드
    def __str__(self):
        return f"[{self.name}] 체력 : {self.hp} 이동속도 : {self.move} 공격력 : {self.demage}"

# 프로브 객체를 생성
probe = Unit("프로브", 20, 20, 5)

# 질럿 객체를 생성
zealot = Unit("질럿", 100, 60, 16)

# 드라군 객체를 생성
dragoon = Unit("드라군", 100, 80, 20)

# 객체의 속성 정보를 출력
print(probe)
print(zealot)
print(dragoon)

과거 같았으면 이게 무슨 외계어지 했을텐데 이제는 그냥 알겠습니다.

 

우선 실행시키면 잘 동작하는 것이 보입니다.

그렇다면 하나 하나 풀어보면

class Unit:
    """
    속성 : 이름, 체력, 방어막, 공격력
    """
    # 생성자 (constructor)
    # 객체를 생성할 때 호출되는 메서드
    def __init__(self, name, hp, move, demage):
        self.name = name # self는 객체 자기 자신을 의미
        self.hp = hp
        self.move = move
        self.demage = demage
        print(f"[{self.name}](이)가 생성 되었습니다.")

클래스는 속성과 매서드로 나누어진다는 것을 배웠습니다.

이중 매서드는 동작 동적인것을 뜻한다는 것도요 

그렇다면 위 내용을 보면

클래스를 만들며 클래스 이름은 unit 입니다. 

이 unit 클래스에는 4가지 속성이 들어가네요 name, hp, move, demage 입니다.

딱봐도 유닛 이름, 유닛 체력, 유닛 이동속도, 유닛의 공격력이네요 

게임을 개발하는 느낌입니다. 

그리고 인스턴스로 생성할 때 클래스 이름을 출력하게 되어 있네요

    # 객체를 출력할 때 호출되는 메서드
    def __str__(self):
        return f"[{self.name}] 체력 : {self.hp} 이동속도 : {self.move} 공격력 : {self.demage}"

이것은 어려울 것이 없습니다. 

말그대로 객체를 출력할때 호출되는 매서드 입니다. 

__str__ 뭔가 힘관련 같아 보이지만 아무래도 개발할때는 문자열 관련 같죠?

유용하게 배운 f 스트링을 이용하여 값을 리턴해줍니다.

# 프로브 객체를 생성
probe = Unit("프로브", 20, 20, 5)

# 질럿 객체를 생성
zealot = Unit("질럿", 100, 60, 16)

# 드라군 객체를 생성
dragoon = Unit("드라군", 100, 80, 20)

# 객체의 속성 정보를 출력
print(probe)
print(zealot)
print(dragoon)

위 내용은 진짜 어려울것이 없습니다.

정의한 클래스를 가져다가 쓰는 거니까요

필요한 속성을 넣어서 할당하여 생성!

 

아래는 만들어둔 매서드 사용!

 

아직까지 기억해서 정말 다행이네요

 

 

반응형