[스파르타 내배캠 ai 3기] 파이썬 (4)

_포카칩·2022년 9월 17일

4. 파이썬 심화

가. class에 대한 이해

1)class란?

  • class선언은 과자 틀을 만드는 것이고, 선언된 과자틀(class)로 과자(instance)를 만든다고 생각하면 됨.
  • 선언 후 바로 사용되는 함수와는 달리 class는 인스턴스를 생성해서 사용
  • class 내부에 선언되는 메소드는 기본적으로 self라는 인자가 있음
  • self는 class 내에서 전역변수와 같이 사용
    +)용어 정리
    -인스탠스 : 클래스를 사용해 생성된 객체
    -메소드 : 클래스 내에 선언된 함수, 클래스함수라고도 함
    -self : 메소드를 선언할때 항상 첫번째 인자로 self를 넣어줘야 함.

2)class의 기본 구조

class CookieFreme() #C.F라는 이름의 class 선언
def set_cookie_name(self,name):
self.name = name

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

print(cookie.name1) > cookie1
print(cookie.name2) > cookie2

3)init함수

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

cookie1 = CookieFrame("cookie1") > 생성 된 과자의 이름은 cookie1 입니다!
cookie2 = CookieFrame("cookie2") > 생성 된 과자의 이름은 cookie2 입니다!

4)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 자료형과 immutalbe 자료형

1)mutable과 immutable 이란?

  • mutable은 값이 변한다는 의미(immuteable은 그 반대)
    int, str, list는 각각 다른 속성 가짐.
    a = 10
    b = a
    b +=5

print(a) > 10
print(b) > 15
a 담긴 자료형의 속성에 따라 출력 값이 달라짐.

2)immutable 속성을 가진 자료형

  • int, float, str, tuple

3)mutable 속성을 가진 자료형

  • list, dict

4)코드에서 mutable과 immutable의 차이 비교해보기

immutable = "String is immutable!!"
mutable = ["list is mutable!!"]
 
string = immutable
list_ = mutable

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

print(immutable) > String is immutable!!
print(mutable) > ['list is mutable!!', 'mutable list!!']
print(string) > String is immutable!! immutable string!!
print(list_) > ['list is mutable!!', 'mutable list!!']

2번째 mutable 이 조금 특이함. 상식적으로는 ["list is mutable!!"]이 나올 것 같지만, ['list is mutable!!', 'mutable list!!']가 나온다.

mutable = ["list is mutable!!"]

list_ = mutable
list_.append("mutable list!!")

print(mutable) > ['list is mutable!!', 'mutable list!!']

#str과 비교
a = '123'
b = a

c = ["a"]
d= c

str은 a,b가 각각 '123'을 바라보는 것이고 list는 c,d가 같은 ['a']를 바라본다고 생각하면 됨.

profile
I love pocachip.

0개의 댓글