코딩일지/TIL: Today I Learned

20220913 TIL

야언 2022. 9. 13. 20:11

오늘의 한 일

  • python 강의 4일차 
  • 클래스 활용하기 과제
  • 백준 알고리즘 문제 풀이 - 정리 및 복습

 

 

 

python 강의 4일차

 

 

Python 심화

 

class에 대한 이해

  • class란?
클래스를 선언하는것은 과자 틀을 만드는 것이고, 선언된 과자틀(class)로
과자(instance)를 만든다고 생각하면 됩니다.

선언 후 바로 사용되는 함수와 다르게 클래스는 인스턴스를 생성하여 사용하게 됩니다.

class 내부에 선언되는 메소드는 기본적으로 self라는 인자를 가지고 있습니다.

self는 클래스 내에서 전역 변수와 같이 사용됩니다.

# 용어 정리
 - 인스턴스(instance) : class를 사용해 생성된 객체
 - 메소드(method) : 메소드란 클래스 내에 선언된 함수이며, 클래스 함수라고도 한다.
 - self : 메소드를 선언할 때에는 항상 첫번째 인자로 self를 넣어줘야 한다.

 

  • class의 기본 구조
class CookieFrame(): # CookieFrame이라는 이름의 class 선언
    def set_cookie_name(self, name): 
        self.name = name

cookie1 = CookieFrame()
cookie2 = CookieFrame()

cookie1.set_cookie_name("cookie1") # 메소드의 첫 번째 인자 self는 무시된다.
cookie2.set_cookie_name("cookie2")

print(cookie1.name) # cookie1
print(cookie2.name) # cookie2
  • __init__ 함수
# class에 __init__메소드를 사용할 경우 인스턴스 생성 시 해당 메소드가 실행된다.
class CookieFrame():
    def __init__(self, name):
        print(f"생성 된 과자의 이름은 {name} 입니다!")
        self.name = name

cookie1 = CookieFrame("cookie1") # 생성 된 과자의 이름은 cookie1 입니다!
cookie2 = CookieFrame("cookie2") # 생성 된 과자의 이름은 cookie2 입니다!
  • class 활용해보기
from pprint import pprint

class Profile:
    def __init__(self):
        self.profile = {
            "name": "-",
            "gender": "-",
            "birthday": "-",
            "age": "-",
            "phone": "-",
            "email": "-",
        }
    
    def set_profile(self, profile):
        self.profile = profile
        
    def get_profile(self):
        return self.profile
    
profile1 = Profile()
profile2 = Profile()

profile1.set_profile({
    "name": "lee",
    "gender": "man",
    "birthday": "01/01",
    "age": 32,
    "phone": "01012341234",
    "email": "python@sparta.com",
})

profile2.set_profile({
    "name": "park",
    "gender": "woman",
    "birthday": "12/31",
    "age": 26,
    "phone": "01043214321",
    "email": "flask@sparta.com",
})

pprint(profile1.get_profile())
pprint(profile2.get_profile())

# result print
"""
{   
    'name': 'lee',
    'gender': 'man',
    'birthday': '01/01',
    'age': 32,
    'phone': '01012341234',
    'email': 'python@sparta.com'
}
{
    'name': 'park',
    'gender': 'woman',
    'birthday': '12/31',
    'age': 26,
    'phone': '01043214321',
    'email': 'flask@sparta.com'
}
"""

 

 

mutable 자료형과 immutable 자료형

  • mutable과 immutable이란?
muteble은 값이 변한다는 의미이며, immutable은 값이 변하지 않는다는 의미입니다.
int, str, list 등 자료형은 각각 muteble 혹은 immuteble한 속성을 가지고 있습니다.

a = 10
b = a

b += 5

와 같은 코드가 있을 때 a에 담긴 자료형이 muteble 속성인지 immuteble 속성인지에 따라
출력했을 때 결과가 달라지게 됩니다.
  • immutable 속성을 가진 자료형
    • int, float, str, tuple
  • mutable 속성을 가진 자료형
    • list, dict
  • 코드에서 mutable과 immutable의 차이 비교해보기
immutable = "String is immutable!!"
mutable = ["list is mutable!!"]
 
string = immutable
list_ = mutable

string += " immutable string!!"
list_.append("mutable list!!")

print(immutable)
print(mutable)
print(string)
print(list_)

# result print
"""
String is immutable!!
['list is mutable!!', 'mutable list!!']
String is immutable!! immutable string!!
['list is mutable!!', 'mutable list!!']
"""

 

* 리스트 자료형의 결과값만 가져오기 ->  copy모듈의 deepcopy 혹은 문자열 연산자 [::]

 

 

 

 

클래스 활용해보기 과제

 

https://yaun.tistory.com/166

 

20220913 클래스 활용해보기

1. 도형 넓이 계산기 num1 = int(input('첫 번째 숫자를 입력 : ')) num2 = int(input('두 번째 숫자를 입력 : ')) class calc_area: def __init__(self, num1, num2): self.num1 = num1 self.num2 = num2 def sq..

yaun.tistory.com

 

 

일단 크게 응용하는 부분은 없어서 간단하게 코드를 짤 수 있었지만 아직 어떻게 활용하는지에 대해서는 감이 잘 잡히지 않는듯 합니다.. 앞으로 장고 배워가면서 쓸 일이 많다고 하니 익숙해지도록 합시다

 

 

 

 

 

백준 알고리즘 - 문자열

 

 

처음 쓰는 함수들이 많아서 구글링도 많이 하고, 코드도 바로바로 짜이지 않아서 고생 깨나 했다.

상수(역순), 다이얼, 그룹 단어 체커, 단어 공부, ord함수/chr함수 등등 꾸준히 복습해서 확실하게 내것으로 만듭시다!