260609 교육 - Python Class

반응형

 

# 부모 클래스 정의
class Animal:
    def __init__(self):
        self.hungry = 0

    def eat(self):
        self.hungry -= 10
        print("밥 먹었음! -> 배고픔 지수 :  ", self.hungry)

    def walk(self):
        self.hungry += 10
        print("산책함! -> 배고픔 지수 : ", self.hungry)

class Dog(Animal):
    def __init__(self):
        super().__init__()

    def sound(self):
        print("멍멍!")

    def eat(self, food):
        super().eat() # 부모클래스(super())의 eat()메서드 호출 
        print(f"왈왈! {food}마싯다.")

wandu = Dog()

wandu.eat("소세지")

이렇게 food 받아서 하는 것도 되네요.

 

c++ 배울 때 조오금 생각나고 재밌다.

그때 이것저것 만들어봤었는데,,, 그렇게 어려워질 줄 몰랐지.

 

class Character:
    def __init__(self, name):
        self.health = 200
        self.name = name
    
    def move(self):
        self.health -= 10
        print(f"운동함 -> {self.health}")

    def rest(self):
        self.health += 10
        print(f"휴식함 -> {self.health}")

    def check_health(self):
        print(f"현재 상태 -> {self.health}")

hani = Character("hani")
class Knight(Character):
    def __init__(self, name):
        super().__init__(name)

    def move(self):
        super().move()
        self.health -= 5
        print("추가 데미지 -5")
        print(f"현재 상태 -> {self.health}")

    def attack(self):
        print("공격합니다.")

class Healer(Character):
    def __init__(self, name):
        super().__init__(name)
        self.mana = 100

    def heal(self, character=Character):
        print(f"{self.name}: {character.name}를 치료합니다.")
        self.mana -= 10
        character.rest()

    def check_mana(self):
        print(f"현재 남은 마나는 {self.mana}입니다.")


kkachi = Knight("kkachi")

umji = Healer("umji")

kkachi.move()

umji.heal(kkachi)

 

쓰는 방법이 이게 맞나?

이렇게라도 애들이랑 노니까 재밌어 

 

 

  • 강아지라는 객체가 있다면?
    • 강아지의 속성(데이터) : 이름, 나이, 품종
    • 강아지의 기능(메서드) : 짖기, 뛰기, 먹기
  • 이렇게 현실세계의 개념을 프로그램 안에 그대로 모델링하는 방식이 바로 객체지향 프로그램
  • 클래스 : 객체(인스턴스)를 만들기 위한 도구/문법/템플릿/청사진/설계도
  • 객체(Object) : 굳이 어떤 클래스를 통해 생성된 객체인지 언급하지 않음
  • 인스턴스(Instance) : 특정 클래스를 통해 만들어진 객체를 언급할 때 쓰임

dog1 = Dog(”Buddy”, 3) # dog1은 Dog클래스에 대한 인스턴스다.

  • 밖에 정의되는 게 클래스 속성
  • 안에 정의되는 게 인스턴스 속성

상속

  • 기존 클래스(부모 클래스) 기능 물려받아 새로운 클래스(자식 클래스)를 만드는 것
  • 상속을 하면 기존 코드를 재사용하고, 기능을 확장하거나 변경하기 쉬워짐
  • 자식 클래스는 부모 클래스의 속성과 메서드를 그대로 사용할 수 있게 됨
더보기

슬랙 디렉터리 누르니까 내 프로필에 "본인입니다!"라고 되어있었다.

나는 진짜 이거 쓴 기억이 없는데 뭐지? 마치 고양이 사진 올리고 본인사진인데요 ㅎ 하는 사람 같잖아.

아니 그냥 기본 메세진가? 슬랙이 친절하게 이게 내 프로필이라고 알려주는건가? 그런거겠지? 

728x90
반응형