Python-08.Method and Class

안녕하세요 묵호입니다.
이번 글에서는 메소드와 클래스에 대해 알아보도록 하겠습니다.
아, 오늘 날짜에 왜 이렇게 글이 많이 올라오냐면 제가 밤을 새버렸습니다… 게임하기 싫어서 이거 적습니다.
오늘은 3.1절입니다. 나라의 독립을 위해 힘써주신 모든 순국선열 분들께 감사하다는 말씀 드리면서 글 시작하겠습니다.

Method and Class

함수에는 여러 가지 형태가 있습니다.

  • Built-in Functions: 파이썬 언어에서 기본 제공하는 함수
  • Functions Inside Modules: 모듈을 import하여 사용하는 함수
  • User Defined Functions: 사용자가 직접 만든 함수 하지만 이들과 다른 형태의 함수가 있습니다.
sentence = "Republic of Korea"
sentence.count('e')
# 2

이 코드에서는 문자열 sentence 뒤에 .을 찍은 후 count() 함수를 호출합니다. 이 형태를 Method라고 합니다. 메소드는 특정 타입(int, float, str, list 등)에 포함된 함수로서, 관련성이 있는 data와 function을 묶은 개념이라고 보시면 됩니다.

sentence는 문자열(str) 타입입니다. sentence 안에는 “Republic of Korea”라는 데이터가 있고, 본인 데이터 안에 글자수를 세는 count()와 같은 함수가 묶여있는 것입니다.
이런 데이터와 함수가 묶여있는 타입을 Python에서는 Class(클래스)라고 하며, Class 안의 함수들을 Method(메소드)라고 합니다.
또한 문자열 Class 타입에서 만들어진 sencence를 객체(Object)라고 합니다.
클래스로부터 만들어지는 객체들의 데이터와 함수는 멤버 데이터멤버 메소드라고 하여, 특정 타입에 소속된 것입니다.

요약하자면,

  1. String type의 class를 기반으로 sentence object를 생성함
  2. sentence objectmember data로 “Republic of Korea”를 저장함
  3. String type의 class면 사용할 수 있는 member method인 count()를 사용하여, data 안에서 글자 ‘e’의 갯수를 셈
    특정 타입(int, str, list) 클래스의 멤버 메소드에 대해 더 알고 싶으시다면, help(특정 타입) 구문을 입력해 멤버 메소드의 종류와 사용법을 알아보세요.

Member Method in String Type

여기서 더 자세한 정보를 얻을 수 있습니다.

  • find(문자 or 문자열): 처음으로 발견되는 문자 또는 문자열의 위치를 반환합니다. 이때, 문자는 대소문자를 구분합니다. 발견하지 못할 경우 -1을 반환합니다.
sentence = "Republic of Korea"
print(sentence.find('e'))
print(sentence.find('of'))
print(sentence.find('z'))
# 1
# 9
# -1
  • index(문자 or 문자열): find()와 같지만, 발견하지 못할 경우 예외를 발생시킵니다.
sentence = "Republic of Korea"
print(sentence.index('e'))
print(sentence.index('of'))
# 1
# 9

만약 문자열에서 특정 문자나 문자열의 모든 위치를 찾고 싶다면 반복문과 enumerate() 함수 등을 이용해 모든 위치를 얻을 수 있습니다.
enumerate()함수는 리스트가 있는 경우 순서와 리스트의 값을 전달하는 기능을 가집니다. 순서가 있는 자료형(list, set, tuple, dictionary, string)을 입력으로 받아 index 값을 포함하는 enumerate 객체를 반환합니다.

sentence = "Republic of Korea"
lst = [] # 빈 리스트를 선언합니다.
for position, char in enumerate(sentence):
    if (char == 'e'):
        lst.append(position) # e를 sentence에서 찾은 경우, 리스트에 위치를 삽입합니다.
print(lst)
# [1, 15]
  • capitalize(): 문자열의 첫 문자를 대문자로 바꿉니다.
  • upper(): 문자열의 모든 문자들을 대문자로 바꿉니다.
  • lower(): 문자열의 모든 문자들을 소문자로 바꿉니다.
  • center(숫자): 문자열을 ‘숫자’ 칸 안에서 가운데 정렬합니다.
sentence = "Republic of Korea"
print(sentence.capitalize())
print(sentence.upper())
print("Republic of Korea".lower()) # 이런 식의 사용도 가능합니다.
print(sentence.center(30))
print(sentence.center(30, '_'))
# Republic of korea
# REPUBLIC OF KOREA
# republic of korea
#      Republic of Korea       
#______Republic of Korea_______  
  • replace(a, b): 문자열 안에서 특정 문자열(a)을 다른 문자열(b)로 변환합니다.
sentence = "Republic of Korea"
print(sentence.replace('K', 'C'))
# Republic of Corea
  • ’‘.join(): 문자열을 ‘‘안의 문자로 구분해 합칩니다.
sentence_l = ['Republic', 'of', 'Korea']
sentence = ' '.join(sentence_l)
sentence2 = '/'.join(sentence_l)
print(sentence)
print(sentence2)
# Republic of Korea
# Republic/of/Korea
  • split(): 문자열을 분리해 리스트로 반환합니다. 파라메터를 주지 않으면 공백을 기준으로 분리합니다.
sentence = "Republic of Korea"
sentence2 = "Korea/Japen"
print(sentence.split())
print(sentence2.split('/'))
# ['Republic', 'of', 'Korea']
# ['Korea', 'Japen']
  • startswith(문자 or 문자열): 문자열이 입력한 문자나 문자열로 시작하면 True를, 그렇지 않다면 False를 반환합니다.
  • endswith(문자 or 문자열): 문자열이 입력한 문자나 문자열로 끝나면 True를, 그렇지 않다면 False를 반환합니다.
sentence = "Republic of Korea"
print(sentence.startswith('Re'))
print(sentence.endswith('Re'))
# True
# False
  • isalnum(): 문자열이 알파벳(A-Z, a-z) 또는 숫자(0-9)로 이루어져 있다면 True, 아니면 False를 반환합니다.
  • isalpha(): 문자열이 알파벳(A-Z, a-z)로 이루어져 있다면 True, 아니면 False를 반환합니다.
  • isdecimal(): 문자열이 십진수로 이루어져 있다면 True, 아니면 False를 반환합니다.
a = '1234'
b = '1q2w3e4r!'
print(a.isalpha())
print(b.isalnum())
print(a.isdecimal())
print(b.isdecimal())
# False
# False
# True
# False
  • strip(): 앞뒤 공백을 제거한 문자열을 반환합니다. 문자열 사이의 공백은 제거하지 않습니다.
a = '  Python  '
print(a.strip())
# Python


다음 시간에는 리스트, 튜플, 딕셔너리, 집합에 대해 알아보겠습니다.
그럼.. 바위^^