[TIL] 220601

Pream·2022년 6월 1일
post-thumbnail

클래스의 기능 3가지를 알아보았다.

    1. property
    1. getter & setter

우선 간단한 예제를 만들어보자.

class Person:
  def __init__(self, first_name, last_name):
    self.first_name = first_name
    self.last_name = last_name
    
  def full_name(self):
    return self.first_name +' '+self.last_name
person = Person('Ted', 'William')

print(person.first_name) #-> 'Ted'
print(person.full_name) #-> <bound method Person.full_name of <__main__.Person object at 0x7f0329e35b90>>

1. @property :

property를 사용하면 클래스 내부의 함수를 특성(attribute)처럼 접근할 수 있다.

class Person:
  def __init__(self, first_name, last_name):
    self.first_name = first_name
    self.last_name = last_name
    
  @property
  def full_name(self):
    return self.first_name +' '+self.last_name
person = Person('Ted', 'William')

print(person.first_name) #-> 'Ted'
print(person.full_name) #-> 'Ted William'

2. getter & setter :

getter는 어떤 것을 가져올때 사용된다.
setter는 값을 설정해줄때 사용된다.
@property를 설정했을때 이미 어떻게 가져올지 정해졌으므로 별도로 설정할 필요는 없고 setter는 별도로 메소드를 만들어 설정해준다.

위의 예제에서
self.first_name = 'Ted'
self.last_name = 'William'
을 초기값으로 입력하고
full_name을 치면 'Ted William'이 나왔다.

그렇다면
full_name을 'Ariana Grande'로 변경해줄시
각각의 초기값이
self.first_name = 'Ariana'
self.last_name = 'Grande'
로 변경될수 있게 하려면 어떻게 해야할까?

class Person:
  def __init__(self, first_name, last_name):
    self.first_name = first_name
    self.last_name = last_name
  
  @property
  def full_name(self):
    return self.first_name +' '+ self.last_name

  @full_name.setter
  def full_name(self, new_full_name):
    first_name, last_name = new_full_name.split()
    self.first_name = first_name
    self.last_name = last_name
person = Person('Ted', 'William')
print(person.first_name) #-> 'Ted'
print(person.full_name) #-> 'Ted William'

person.full_name = 'Ariana Grande'
print(person.first_name)	# 'Ariana'
print(person.last_name)		# 'Grande'
print(person.full_name)		# 'Ariana Grande'
profile
예비 데이터개발자

0개의 댓글