imhamburger 님의 블로그

파이썬(Python) - 클래스(Class) 본문

파이썬(Python)

파이썬(Python) - 클래스(Class)

imhamburger 2024. 6. 27. 12:21

클래스는 똑같은 무엇인가를 계속해서 만들어 낼 수 있는 설계 도면이다. 그리고 그 설계도면을 이용해 만든 제품을 객체라 부른다.

만약, 각기 다른 종류의 햄버거를 100개 이상 생산한다고 가정해보자. 함수를 일일이 100개씩 만들어야 하는 엄청난 수작업이 필요하게 된다. 하지만 그러한 수고를 덜어주는 것이 바로 클래스다.

 

클래스를 사용할 땐 정해진 규칙이 있다. 이 규칙대로 코드를 적어줘야 한다. 이는 객체를 만들 때 실행되는 함수인데 다른말로 생성자라고 부른다.

 

예시

class Hamburger:
	def __init__(self,변수명): #여기서 self는 객체 자기자신을 뜻한다.
    	self.변수명 = @@

#자세한 예시
class Hamburger:
	def __init__(self,name):
    	self.name = name

 

그럼 클래스를 이용하여 여러 종류의 햄버거를 만들어보자.

class Hamburger:
    def __init__(self, name, kcal):
        self.name = name
        self.kcal = kcal
    
    def saying(self):
        print(f"나는 {self.name}버거 {self.kcal}칼로리")

bacon = Hamburger("베이컨", 100) #bacon 이라는 객체를 생성 name과 kcal 인자에 넣고싶은걸 넣는다.
cheese = Hamburger("치즈", 200)
bacon.saying() #출력: 나는 베이컨버거 100칼로리
cheese.saying() #출력: 나는 치즈버거 200칼로리

 

또한, 클래스는 상속이라는 기능을 가지고 있는데 부모클래스를 이용하기 위해선 super() 라는 것을 붙여야 한다.

 

클래스상속

class Character:
    def __init__(self, name, kcal):
        self.name = name
        self.kcal = kcal

    def attack(self):
        print(f'{self.name}버거가 공격합니다!')

class Bacon(Character):
    def __init__(self, name, kcal, strength):
        super().__init__(name, kcal)
        self.strength = strength

    def attack(self):
        super().attack()
        print(f'{self.name}버거의 강력한 공격! 공격력:{self.strength}')

class Cheese(Character):
    def __init__(self, name, kcal, magic_power):
        super().__init__(name, kcal)
        self.magic_power = magic_power

    def attack(self):
        super().attack()
        print(f'{self.name}버거의 마법 공격! 공격력:{self.magic_power}')

player1 = Bacon('베이컨', 100, 30)
player2 = Cheese('치즈', 200, 50)
player1.attack() #출력:베이컨버거가 공격합니다! 베이컨버거의 강력한 공격! 공격력:30
player2.attack() #출력:치즈버거가 공격합니다! 치즈버거의 강력한 공격! 공격력:50

부모클래스를 이용하여 공통된 부분만 이용하고 다른 부분만 객체를 만들어 효율적으로 코드를 작성할 수 있다.

 

클래스는 한번에 이해하기 어려워서 반복적으로 연습할 필요가 있다..