get/set
์์ฑ๊ฐ๊ณผ ํ๋กํผํฐ
์๋ฐ์์ ์น ํ๋ก๊ทธ๋๋ฐ์ ํ ๋ ์์ฃผ ์ฌ์ฉ๋๋ private
, private์ผ๋ก ์ ๊ทผ ์ ํ๋ ๋ฉค๋ฒ์ ์ ๊ทผํ๊ธฐ ์ํด์๋ getter
๊ณผ setter
์ ์ด์ฉํ์๋ค.
private String name;
private string account;
private String password;
public String getName(){ return this.name; }
public void setname(String name){
this.name = name;
}
...
ํ์ง๋ง Python์ ๊ทธ๋ด ํ์๊ฐ ์๋ค. ์๋? ๋ชจ๋ ์์ฑ๊ณผ ๋ฉ์๋๋ Public์ด๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ ์ง๋ง ์ด๋์ ๊ฐ๋ ๊ฒํฐ ์ธํฐ์ ๊ฐ์ด ์ ๊ทผ์ ์ ํํด์ผํ ๋๊ฐ ์๋๋ฐ ๊ทธ ๋ ์ฌ์ฉํ๋ ๊ฒ์ด ํ๋กํผํฐ์ด๋ค.
์์ _1 ํ๋กํผํฐ ์ง์ ์ฌ์ฉ
์ java์ ์์ ์ฒ๋ผ getter์ get_name()
์ผ๋ก setter์ set_name()
์ผ๋ก ์ ์ํ๋ค.
๊ทธ๋ฆฌ๊ณ property
๋ฅผ ์ด์ฉํ์ฌ ์์ฑ์ ์ ์ํ๋ค.
๊ทธ๋ ๋ค๋ฉด ์ฐ๋ฆฌ๋ __init__()
์ ์์ฑ์ผ๋ก ์ ์๋ hidden_name
์ ์ฌ์ฉํ ์ ์๋ค.
class Robot():
def __init__(self, input_name):
self.hidden_name = input_name
def get_name(self):
print('inside the getter')
return self.hidden_name
def set_name(self, input_name):
print('inside the setter')
self.hidden_name = input_name
name = property(get_name, set_name)
์์ _2 ๋ฐ์ปค๋ ์ดํฐ๋ฅผ ์ด์ฉํ ํ๋กํผํฐ ์ ์
๋ฐ์ปค๋ ์ดํฐ๋ฅผ ์ด์ฉํ ๋๋ ์๋ก ๋ค๋ฅธ ๋ฐ์ปค๋ ์ดํฐ๋ฅผ ์ด์ฉํ๋ค.
- getter ๋ฉ์๋ ์์
@property
๋ฐ์ปค๋ ์ดํฐ ์ถ๊ฐํ๊ธฐ
@property
def name(self):
print('inside the getter')
return self.hidden_name
- setter ๋ฉ์๋ ์์
@name.setter
๋ฐ์ปค๋ ์ดํฐ ์ถ๊ฐํ๊ธฐ
@name.setter
def name(self, input_name):
print('inside the setter')
self.hidden_name = input_name
์ฃผ์ํด์ผ ํ ์ ์ name() ๋ฉ์๋์ ์ด๋ฆ์ ๊ฐ๊ฒ ํ๋ ๊ฒ์ด๋ค.
get_name()
๊ณผ set_name()
๋ฉ์๋๋ ๋ณด์ด์ง ์์ง๋ง ์ฌ์ ํ name์ ์์ฑ์ฒ๋ผ ์ ๊ทผํ ์ ์๋ค.
private ๋ค์ ๋งน๊ธ๋ง
์์ ์์ ์์ hidden_name
์์ฑ์ ํธ์ถํ๋๋ฐ, ์ฐ์ฐํ ๋๊ตฐ๊ฐ๊ฐ hidden_name
์ ์ ๊ทผํ ์ ์๋ค.
์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ค์ด๋ฐ ์ปจ๋ฒค์ ์ ์ฌ์ฉํ๋ฉด ํด๋์ค ์ ์ ์ธ๋ถ์์ ๋ณผ ์ ์๋๋ก ์์ฑ์ ์จ๊ธฐ๋ ๊ฒ์ด๋ค.
๋ค์ ๋งน๊ธ๋ง์ ํ๊ธฐ ์ํด์๋ ์ธ๋์ค์ฝ์ด ๋ ๋ฒ์ ์ฌ์ฉํ๋ฉด ๋๋ค __name
๋ค์ ๋งน๊ธ๋ง์ ํตํ์ฌ hidden_name์ __name์ผ๋ก ๋ฐ๊ฟ๋ณด์.
๋ค์ ๋งน๊ธ๋ง์ ํ์ง ์์ ๊ฒฝ์ฐ
class Robot():
def __init__(self, input_name):
self.hidden_name = input_name
@property
def name(self):
print('inside the getter')
return self.hidden_name
@name.setter
def name(self, input_name):
print('inside the setter')
self.hidden_name = input_name
game_robot = Robot('jang')
print(game_robot.hidden_name)
์ด์์คํธ ์ฝ๋๋ก ๋ง์ง๋ง print(game_robot.hidden_name)
์ผ๋ก ์ ๊ทผํ ์ ์๋๋ฐ ๋ค์ ๋งน๊ธ๋ง์ ์ํํ ํ
class Robot():
def __init__(self, input_name):
self.__name = input_name
@property
def name(self):
print('inside the getter')
return self.__name
@name.setter
def name(self, input_name):
print('inside the setter')
self.__name = input_name
game_robot = Robot('jang')
๋ ์ด์ ์ฐ๋ฆฌ๋ hidden_name
์ ์ ๊ทผํ ์ ์๊ฒ ๋๋ค.
๊ทธ๋ฌ๋ ๋ค์ ์๋ฒฝํ ๋ณดํธํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ์ง๋ ์์ง๋ง ์๋์ ์ธ ์ง์ ์ ๊ทผ์ ๋ง์ ์ ์๋ค.
'๐คท๐ผโโ๏ธ Etc... > - C, C++, Python, Android' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋๋ก์ด๋ ์คํ๋์ค] View์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ์ดํด (0) | 2020.04.30 |
---|---|
[Python ๊ณ ๊ธ]: ๊ฐ์ฒด์ ํด๋์ค(4) ํด๋์ค ๋ณ์ vs ์ธ์คํด์ค ๋ณ์ (0) | 2019.12.08 |
Python ๊ณ ๊ธ : ๊ฐ์ฒด์ ํด๋์ค(2) ์์์ ๊ดํ์ฌ (0) | 2019.12.08 |
Python ๊ณ ๊ธ: ๊ฐ์ฒด์ ํด๋์ค(1) ์ ๋ฌธํ๊ธฐ (0) | 2019.12.08 |
Python ์์ธ๋ฅผ ๋ค๋ค๋ณด์. (0) | 2019.12.07 |
๋๊ธ