Cute Running Puppy

Python

Python_16Day

jwjin 2019. 3. 7. 21:12
728x90

# 정적 변수 , 정적 메소드 , 접근제한 , setter / getter 메소드

class Monster():

# 게임 이름을 정적 변수로 선언
game = '리니지'

클래스 안에 정적 변수로 선언합니다.

출력을 할 때에는 game = {Monster.game} 이런 형태로 만듭니다. self를 붙이지 않습니다.

<아이폰XS 휴대폰 목록>

이름 색상 가격 메모리
아이폰XS    블랙 130만 256GB
아이폰XS    블랙 130만 256GB
아이폰XS    블랙 130만 256GB

정적 데이터와 동적 데이터를 구분하여 구현하세요


class Phone():

NAME = '아이폰XS' # 대문자 => 변경되지 않는다


def __init__(self , color , price , memory):
self.color = color
self.price = price
self.memory = memory

def __str__(self):
return f'name = {Phone.NAME} , color= {self.color} , price = {self.price} , memory = {self.memory}'


a = Phone('블랙' , 1300000 , 256)
b = Phone('블랙' , 1300000 , 256)
c = Phone('블랙' , 1300000 , 256)


print(a)
print(b)
print(c)

 위의 목록을 구현하라는 문제입니다. 우선 name 한개를 정적 변수로 선언합니다.

나머지 색상과 가격 메모리는 인스턴스로 저장 합니다.

그리고 나서 위와 같이 출력하고 색상 , 가격 , 메모리 정보를 써주고 출력해주면 위와 같이 출력됩니다.

다음은 정적 메소드 입니다. 정적 메소드란 소속이 있는 함수를 말합니다.

# 일반적인 함수
def hello(name):
print(f'안녕하세요 {name}님!')

위가 바로 일반적인 함수의 형태입니다.

# 정적 메소드
class Printer():

@staticmethod
def hello(name): # self 필요 없음
print(f'안녕하세요 {name}님!')

정적 메소드의 형태는 @staticmethod를 추가하고 써주는 형태라 할 수 있습니다. self는 필요가 없습니다.

다음은 접근제한 입니다.

파이썬에서는 인스턴스 변수에 접근이 가능하기 떄문에 원치 않는 데이터가 들어올 수 있기 때문에 접근 제한을 하는 것 입니다.

접근 제한을 설정하기 위해서는 언더바(_)를 2개씩 부여하면 됩니다.

self.__name = name
self.__score = score

예시 입니다, 출력할 때에도 언더바를 붙여서 만들면 됩니다. ex) name = {self.__name}

다음은 setter / getter 메소드 입니다. 

class Student():

def __init__(self , name , score):
self.__name = name
self.__score = score

def __str__(self):
return f'name = {self.__name} , score = {self.__score}'

# 점수를 변경(set)하거나 반환(get) 할 수 있도록 메소드를 설정
def set_score(self , score):
self.__score = score

def get_score(self):
return self.__score


a = Student('이오리' , 90)
b = Student('베니마루' , 95)

# a의 점수를 변경
a.set_score(200)

print(a.get_score())

위에선 점수를 변경하거나 반환 할 수 있도록 setter / getter 메소드를 사용합니다.

이때 접근 제한을 설정 해도 클래스 내부에서는 접근이 가능합니다.

설정해주고.. a의 점수를 반환하고 싶다면 a.set_score로 나타냅니다. 그러면 접근제한이 있지만 점수를 바꿀 수 있습니다.




728x90

'Python' 카테고리의 다른 글

Python_18Day  (0) 2019.03.11
Python_17Day  (0) 2019.03.08
Python_15Day  (0) 2019.03.06
Python_14Day  (0) 2019.03.05
Python_13Day  (0) 2019.03.04