[Python] classmethod 와 staticmethod

2016. 11. 16. 12:41프로그래밍/Python & dJango

Classmethod & Staticmethod


파이썬에서 제공되는 decorator @classemthod @staticmethod 를 사용하여 구현한다.


1. Classmethod

  - classemethod 는 인자로 class가 반드시 선언되어야 한다.

  - 만약 class 내부 값을 변경할 경우 class 내부의 값이 변경된다.

 

example)

class NormalClass(object):

    '@classmethod
    def class_set(cls, txt):
        cls.txt = txt


class NormalClass2(NormalClass):
    print "----------NormalClass2---------"


NormalClass.class_set('hello')
NormalClass2.class_set('world')

print NormalClass.txt
print NormalClass2.txt


result)

 ----------NormalClass2---------
hello
world

위의 결과를 보면 각각의 클레스의 txt값이 변경되었다.


2. Staticmethod

  - static method 는 classmethod와 다르게 static 영역이 존재하며, 만약 이 데이터를 수정할 경우 영역안의 값이 변경된다.


example)

class NormalClass(object):

    '@staticmethod
    def static_set(txt):
        NormalClass.txt = txt


class NormalClass2(NormalClass):
    print "----------NormalClass2---------"


NormalClass.static_set('hello')
NormalClass2.static_set('world')

print NormalClass.txt
print NormalClass2.txt



result) 

 ----------NormalClass2---------
world
world

staticmethod를 사용하면 static 영역안의 값이 변경이 되는 것을 볼 수 있다.


'프로그래밍 > Python & dJango' 카테고리의 다른 글

Python - Elastic Search Service [6.x] 생성, 조회, 삭제  (0) 2018.10.05
[django] 리스트 순번  (0) 2016.10.23
[Python] 집합 (set)  (0) 2016.10.19
[django] convert integer to string  (0) 2016.10.19
[dJango] Q expression  (0) 2016.10.19