본문 바로가기
TIL(Daily)/Python

Tue/13/Sep/22-python 심화(Clalss,Mutable,Immutable)

by Hawie 2022. 9. 13.

오늘은 파이썬 심화강의 의 첫번째 

 

Clalss,Mutable,Immutable  대해서 알아보자.

 

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!!']
"""

 


위 와 같이 오늘 배운 내용들을 가지고 왔다.

python 심화과정 첫번째 시간이었는데 

아침에 컨티션이 좋지 않아 제대로 못들어서 다시 한번 복습으로 듣게 되었다.

그결과 두번 듣다 보니 어느 정도 이해 할 수 있게 되었다.

 용어 를 보자면 들어 본적있은 있지만 잘 알지 못 한 것 들 을 오늘 배우게 되었다

 

용어 정리

인스턴스(instance) : class를 사용해 생성된 객체 

메소드(method) : 메소드란 클래스 내에 선언된 함수이며, 클래스 함수라고도 한다.

self : 메소드를 선언할 때에는 항상 첫번째 인자로 self를 넣어줘야 한다.

 

위에 용어 들을 보면 알수있듯이 약간 어렵다 

그래서

완벽한 이해는 아니 였지만

어느정도 머리속에서 그림이 그려졌다.

하지만 정확 하게 아는게 아니라 설명을 하기는 부족 하기 때문에,

공부를 계속 해서 잘 알 수 있을  때 까지 공부를 하도록 해야겠다.

 

두번째

 

immutable 과 mutable 에 대해서 배우게 되었는데.

이 문법 들 은 자주 사용 되는 문법 들은 아니라고 해서 

알고있다가 사용할 때 가 되면 찾아서 사용해보는 방법이 좋아보인다.

 

오늘은 여기까지 하겠다.

 

'TIL(Daily) > Python' 카테고리의 다른 글

Wed/15/Sep/22 Python 심화  (0) 2022.09.15
Wed/07/Sep/22 TIL  (1) 2022.09.08
Tue/06/Sep/22-TLI  (0) 2022.09.06
Mon/05/Sep/22(Python 언어의 이해)  (1) 2022.09.05
클래스  (0) 2022.09.02

댓글