1. 정적메소드(@classmethod와 @staticmethod)
- 정적메소드라 함은 클래스에서 직접 접근할 수 있는 메소드입니다.
- 파이썬에서는 클래스에서 직접 접근할 수 있는 메소드가 두가지가 있습니다.staticmethod와 classmethod 입니다.
- 하지만 파이썬에서는 다른언어와는 다르게 정적메소드임에도 불구하고 인스턴스에서도 접근이 가능합니다. 이 차이에 유의해야합니다.
- 에디터에서 static_method.py파일을 작성합니다.
- 인스턴스 메소드는 첫번째 인자로 객체 자신 self자신을 입력합니다.
- classmethod는 첫번째 인자로 클래스를 입력합니다.
- staticmethod는 특별히 추가되는 인자가 없습니다.
class hello:
t = '내가 상속해 줬어'
@classmethod
def calc(cls):
return cls.t
class hello_2(hello):
t = '나는 상속 받았어'
print(hello_2.calc())
#결과
내가 상속해 줬어
@staticmethod
즉, 스태틱 메서드는 그냥 클래스 바깥에 정의된 일반 함수와 완전히 동일하게 동작한다.
다만, 특정 클래스와 보다 밀접한 관계가 있다는 것을 나타내기위해,
혹은 조금이라도 코드를 줄여 간단하게 표현하기 위해 @staticmethod 키워드를 사용해 정의하는 것
https://suwoni-codelab.com/python%20%EA%B8%B0%EB%B3%B8/2018/03/11/Python-Basic-class-staticmethod/
@property 사용하기
접근제어자(Access Modifier)
접근 제어자에는 public , private , protected , default 가 있다.
파이썬은 다른언어와 달리 접근 제어자가 없고 작명법으로 접근을 제어할 수 있다. 파이썬에서의 작명법은 아래와 같다.
- public → 접두사에 아무 밑줄이 없다.
- private → 접두사에 두개의 밑줄(__)을 적용
- protected → 접두사에 한개의 밑줄(_) 을 적용
class Example :
def __init__(self):
pass
def public(self):
print('public')
def _protected(self):
print('protected')
def __private(self):
print('private')
Get, Set
다른 언어에서 private 를 사용한 속성값이 있을때 그것을 가져오기 위해서는 get , set 메소드를 쓴다. 파이썬에서는 다음과 같이 사용할 수 있다.
class Person :
def __init__(self):
self.__name = 'hong'
def get_name(self):
return self.__name
def set_name(self, name):
self.__name = name
위와 같이 get , set 메소드를 만들면 함수가 너무 많아지고 복잡해진다.
@property
파이썬에서는 @property 데코레이터를 이용하여 위의 get , set 메소드보다 더욱 직관적으로 표현이 가능하다.
class Person :
def __init__(self):
self.__name = 'hong'
@property
def name(self):
return self.__name
@name.setter
def name(self, name):
self.__name = name
person = Person()
print(person.name) # hong
person.name = 'park'
print(person.name) # park
get의 역할은 property , set의 역할은 setter가 한다. property 가 setter 보다 윗줄에 사용되어야 한다.
https://medium.com/@hckcksrl/python-property-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-89eb0f0e2e56
':: IT > python' 카테고리의 다른 글
[flask]쿠키와 세션 다루기,리다이렉션과 에러처리, 파일 업로드 하기 (0) | 2020.05.07 |
---|---|
Flask 입문, 파이썬과 HTML, 폼으로 데이터 전송받기 (0) | 2020.05.06 |
[파이썬] 데이터 전처리 20200424 (0) | 2020.04.27 |
[파이썬] 전처리 20200423 (0) | 2020.04.27 |
[파이썬]수집된 데이터 형식 확인 및 로컬 전처리 (0) | 2020.04.23 |