[python] 메서드

728x90

1. 메서드

 

파이썬에서 메서드(Method)는 클래스 내에 정의된 함수를 말합니다. 메서드는 객체 지향 프로그래밍에서 객체의 동작을 정의하는 역할을 합니다. 클래스에 정의된 메서드는 해당 클래스의 모든 객체에서 공유되며, 객체가 메서드를 호출할 수 있습니다.


파이썬에서 메서드를 정의하려면 다음과 같은 형식을 따릅니다

class 클래스명:
    def 메서드이름(self, 인자1, 인자2, ...):
        # 메서드 코드

예시)

class AttackUnit:
    def __init__(self,name,hp,damage):
        self.name = name
        self.hp = hp
        self.damage = damage
        
    def attack(self,location):
        print("{0} : {1} 방향으로 적군을 공격합니다. [공격력]:{2}".format(self.name,location,self.damage))
        
    def damaged(self,damage):
        print("{0}: {1} 데미지를 입었습니다.".format(self.name,damage))
        self.hp -= damage
        print("{0} : 현재 체력은 {1}입니다. ".format(self.name,self.hp))
        if self.hp <=0:
            print("{0}: 파괴되었습니다.".format(self.name))   
            
robot = AttackUnit("로봇",50,16)
robot.attack("5시")             

robot.damaged(25)
robot.damaged(25)

출력)

 

 

2. 메서드 오버라이딩(재정의)

#부모 값
class Unit:
    def __init__(self,name,hp,speed):
        self.name = name
        self.hp = hp
        self.speed = speed
        
    def move(self,location):
        print("[지상유닛 이동]")
        print("{0}:{1} 방향으로 이동합니다 [속도 : {2}]".format(self.name,location,self.speed))                
        
        
#자식 값 #다중상속 부모1
class AttackUnit(Unit):
    def __init__(self,name,hp,speed,damage):
        Unit.__init__(self,name,hp,speed) # 상속
        self.damage = damage
        
    def attack(self,location):
        print("{0} : {1} 방향으로 적군을 공격합니다. [공격력]:{2}".format(self.name,location,self.damage))
        
    def damaged(self,damage):
        print("{0}: {1} 데미지를 입었습니다.".format(self.name,damage))
        self.hp -= damage
        print("{0} : 현재 체력은 {1}입니다. ".format(self.name,self.hp))
        if self.hp <=0:
            print("{0}: 파괴되었습니다.".format(self.name))   
            
#다중상속 부모2
class Flyable:
    def __init__(self,speed):
        self.speed = speed
                
    def fly(self,name,location):
        print("{0}: {1}방향으로 날아갑니다. [속도:{2}]".format(self.name,location,self.speed))
    
class FlyableAttack(AttackUnit,Flyable): # 다중 상속시 ,(콤마)로 구분
    def __init__(self,name,hp,damage,speed):
        AttackUnit.__init__(self,name,hp,0,damage) # 지상 speed는 0
        Flyable.__init__(self,speed)
        
    def move(self,location):
        print("[공중 유닛 이동]")
        self.fly(self.name,location)    

car = AttackUnit("차",80,10,20)

cruiser = FlyableAttack("크루저",100,200,5)       

car.move("11시")

cruiser.move("1시")

출력

 

'PYTHON Programming > Python' 카테고리의 다른 글

[python] print와 pass  (0) 2024.05.21
[python] 상속  (0) 2024.05.20
[python] 매직 메서드  (0) 2024.05.11
[python] 클래스  (0) 2024.05.11
[python] 입출력  (0) 2024.04.23