Published 2021. 1. 20. 20:23

mehtod 

  • 멤버함수라고도 하며, 해당 클래스의 object에서만 호출가능
  • 메쏘드는 객체 레벨에서 호출되며, 해당 객체의 속성에 대한 연산을 행함
  • {obj}.{method}() 형태로 호출됨

 

class Counter:
    def __init__(self):
        self.num=0 # Counter type은 항상 num이라는 데이터를 가지며 0으로 초기화된다.
        
c1 = Counter()
print(c1.num)

>> 0

 

class Counter:
    def __init__(self):
        self.num=0 # Counter type은 항상 num이라는 데이터를 가지며 0으로 초기화된다.
    def print_current_value(self):
        print('현재 값은 :', self.num)
        
c1 = Counter()
c1.print_current_value()

>> 0

Counter 클래스 내의 메쏘드를 통해 호출할 수 있다.


 

class Counter:
    def __init__(self):
        self.num=0 # Counter type은 항상 num이라는 데이터를 가지며 0으로 초기화된다.
    
    def increase(self):
        self.num += 1
        
    def reset(self):
        self.num = 0
    
    def print_current_value(self):
        print('현재 값은 :', self.num)
        
c1 = Counter()
c1.print_current_value()
c1.increase()
c1.increase()
c1.print_current_value()

c1.reset()
c1.print_current_value()

>> 현재 값은 : 0
>> 현재 값은 : 2
>> 현재 값은 : 0

increase 메쏘드와 reset 메쏘드를 만들어 보았다.

 


decorator (데코레이터)

class Math:
    def add(self, a, b):
        return a+b:
    
    def multiply(self, a, b):
        return a*b
        
a = Math()
m.add(1,2)
m.multiply(2,3)
class Math:
    @staticmethod
    def add(self, a, b):
        return a+b:
    
    @staticmethod
    def multiply(self, a, b):
        return a*b
        
# a = Math() 객체를 생성하지 않아도 된다.
# m.add(1,2)
# m.multiply(2,3)

Math.add(1,2)
Math.multiply(2,3)

내가 내부적으로 유지할 데이터가 없고 전달될 데이터에 대해서만 반환하는 경우에는  @staticmethod 로 표시해준다.

그러면 객체를 따로 생성하지 않아도 된다.

 

함수 호출이 클래스 레벨로 이루어진다.

'📌 Python' 카테고리의 다른 글

Python - method override, super  (0) 2021.01.20
Python - inheritance(상속)  (0) 2021.01.20
Python - __init__  (0) 2021.01.20
Python - class, object  (0) 2021.01.20
Python - import  (0) 2021.01.19
복사했습니다!