TIL-47 파이썬복습-2 property

이동근·2021년 2월 10일
0

python

목록 보기
17/18
post-thumbnail

객체 프로퍼티 접근

프로퍼티는 외부에서 클래스 내부 변수를 참조하기 위한 함수
'@property' 는 객체지향 프로그래밍을 지원하는 데코레이터 이다.

우선 먼저 알아야할 개념이 private, public 의 개념이다.

privte

지역함수, 클래스 안에서만 사용하고 싶을때 사용한다.

public

전역함수

파이썬에서 기본적으로 함수를 선언하게되면 public함수가 됩니다. private함수를 선언하고 싶으면, 이름앞에 __언더바()를 2개 붙혀주면 됩니다.


이런식으로 Spam() 이라는 클래스를 선언해 주었다.
클래스인 Spam()을 spam이라는 인스턴스로 선언해 준뒤
class의 내부함수 method(), method(), __attr까지 차례로 선언해 보았다.
결과를 먼저 말하자면 method()만 정상적으로 출력이되고 나머지는 출력이 되지 않았다.

-> 그 이유는 'method()' 함수로 출력을 하게되면 private 함수로 선언이 되어서 그 클래스 안에서만 사용이 가능하다. 그래서 class 밖에서 'method'를 선언하더라도 읽을 수가 없다.
'__attr' 역시도 마찬가지이다 언더바 두개로 private변수로 선언을 했기 때문에 class 밖에서 호출을 하더라도 인식을 할 수 가 없다.

그러면 왜 private 기능을 만들었을까? 혹시나 실수같은 것을 방지하기위해서 같이 개발하는 사람에게 정보 제공 정도이지 언어 자체에서 강제한다는게 아니다.

사실 이러한 기능은 파이썬보다는 자바같은 언어에서 많이 사용된다. 이런식으로 object 데이터를 감추고, 메소드를 통해서 접근하는 방법을 추상화, 캡슐화라고 부른다.

이런 것을 처리하는 방법에는 두 가지 방법이 있다.

1. get, set

이 두개의 함수를 만들어서 처리 할수 있다. set을 통해 저장하고, get으로 가져온다는 느낌으로


이런식으로 접근해서 가져올 수 있다.

왜 get과 set인가

위에 말했듯이 파이썬에서는 대부분 public 형태고 private형태는 잘 쓰지 않는다. 이런 것은 주로 java에서 일어나는데 거기서 setter에 데이터를 저장하고 getter로 가져오는 기능이 있기때문에 파이썬에서도 get과 set으로 메소드 이름을 지정해주고 사용하는 것일 뿐이다.

2.property의 사용

이런식으로 Property 데코레이터를 사용해서 할수도 있다.

이 둘의 차이?

이 두개의 방법에는 차이가 있다.

데코레이터를 사용해서 private 값을 가져오게 되면 인스턴스.속성 형식으로 접근하여 값을 저장해서 인스턴스.속성 형식으로 값을 가져올 수 있다. 값을 저장할때 바로 그냥 james.age=20 or james.age=30이런식으로 바로 접근하면 된다.

참고

https://ponyozzang.tistory.com/497

객체메소드 접근

속성 또는 메소드에 접근하는 방법은 (.)연산자를 통해 할 수 있습니다. 내장되어 있는 기능은 굳이 사용할 필요없이 함수의 이름을 호출하면 되지만, 객체에 담겨 있는 행동은 점 연산자로 호출할 수 있습니다.

Title() 내장함수는 알파벳으로 되어있는 문자중 첫글자를 대문자로 바꿔서 제목으로 사용될 수 있도록 변경해주는 메소드 입니다.


title은 내장되어 있는 함수이다.

''python' . title()' 이런식으로 .을 통해 접근해서 내장되어있는 메소드를 호출 할 수있습니다.

profile
하루하루 1cm 자라는 개발자

0개의 댓글