👉🏻 print문
print("hello")
print("hello")
- 큰 따옴표 혹은 작은 따옴표로 감싼다
- 둘 다 같은 결과를 낸다
print('hello "안녕하세요"')
print("hello '안녕하세요'")
- 따옴표를 출력하고 싶다면 작은 따옴표 안에는 큰 따옴표를, 큰 따옴표 안에는 작은 따옴표를 입력한다
print("안녕", "하세요", "반갑습니다")
print("안녕" + "하세요" + "반갑습니다")
- 여러개의 문자열을 이어주고 싶다면 ,(콤마) 혹은 + 로 연결시킬 수 있다
- 콤마의 경우 자동으로 문자열 사이를 띄워준다
print(
"""안녕하세요
오늘은 날씨가 좋네요"""
)
print(
'''안녕하세요
오늘은 날씨가 좋네요'''
)
print("안녕하세요" \
"오늘은 날씨가 좋네요")
- 여러 줄을 입력하고 싶다면 큰 따옴표나 작은 따옴표 3개를 이어 입력하거나
- \(역슬래시)를 이용해서 라인을 구분할 수 있다
a = 123
b = "안녕하세요"
print("a값:{} b값:{}".format(a, b))
a = 123
b = "안녕하세요"
print(f"a값:{a} b값:{b}")
- 변수에 넣은 값을 받아 출력하고 싶다면
- .format(변수명)
- f" {변수명} " 을 사용할 수 있다
👉🏻 input
input()
- 기본적으로 input()만 해도 값을 입력받을 수 있다
input('값을 입력해주세요:')
- ()안에 문자를 입력하면 사용자에게 보여진다
a = input("첫 번재 문자열 입력:")
b = input("두 번째 문자열 입력:")
print(a+b)
- 문자열을 입력 받아 변수에 할당할 수 있다
👉🏻 변수
a = 10
b = 10
c = a+b
print(c)
- =을 기준으로 왼쪽 값이 오른쪽의 값을 가리킨다
- 고 설명하셨는데 오른쪽 값을 왼쪽에 넣어준다는 설명이 더 확실한 듯
a = 10
b = 10
c = a + b
d = '10'
print(c + d)
- c는 int형으로 숫자고, d는 문자열이다
- 문자와 숫자를 더할 수 없다
print(c + int(d))
print(str(c) + d)
- d를 c와 같은 int형으로 바꾸던지
- c를 d와 같은 str형으로 바꿔야 연산이 된다
- 문자열 + 연산의 경우 그냥 옆에 붙인다
🧩 float
e = 3.14
f = 10
print(e + f)
- 같은 숫자형이기 때문에 int와 float을 더해도 에러가 나지 않는다
- 결과는 자동으로 float으로 출력된다
a = 10
b = 10
c = float(a) + float(b)
print(c)
- int형을 float형으로 바꿔 더해봤다
- 당연히 결과는 float형으로 나온다
🧩 Boolean
a_bool = True
b_bool = False
a_int = 1
b_int = 0
print(a_bool)
print(b_bool)
print(type(a_bool))
print(type(b_bool))
print(a_int)
print(b_int)
print(type(a_int))
print(type(b_int))
- type()함수를 통해 해당 변수의 자료형을 출력할 수 있다
- True와 False는 bool형이다
🧩 list
a_list = [1,2,3,4,5]
print(a_list)
print(a_list[0])
print(a_list[1])
- 리스트는 여러 개의 데이터를 하나의 변수로 묶어 표현할 수 있는 자료형이다
- 리스트 생성을 위해 [](대괄호)로 데이터를 묵는다
- 시작은 0번부터
✅ 슬라이싱
print(a_list[:2])
print(a_list[2:])
- :를 통해 원하는 범위의 원소를 가져올 수 있다
- 앞 부분을 비우면 처음부터
- 뒷 부분을 비우면 마지막까지
✅ 추가
b_list = []
b_list.append(1)
b_list.append(2)
b_list.append(3)
print(b_list)
- append()를 통해 리스트에 원소를 집어 넣을 수 있다
- 리스트의 가장 오른쪽에 추가된다
c_list = [1, 3.14,"hello", [1,2,3]]
print(c_list)
print(c_list[1:3])
- 다양한 형태의 데이터가 들어갈 수 있다
✅ 데이터 변경
d_list = [1,2,3,4,5]
print(d_list)
d_list[0] = 5
print(d_list)
- 단순히 = 를 이용하여 해당 위치의 값을 변경할 수 있다
🧩 튜플
a_tuple = (1,2,3,4,5)
print(a_tuple)
- 리스트와 매우 비슷하나
- 튜플의 데이터는 변경할 수 없다는 특징
- ()(소괄호)로 묶는다
✅ 데이터 변경?
a_tuple[0] = 5
- 변경 불가
🧩 딕셔너리
a_dic = {"a": 1, "b": 2, "c": 3}
print(a_dic)
print(a_dic["a"])
print(a_dic["b"])
print(a_dic["c"])
- 사전
- key와 value 쌍으로 구성
- {}(중괄호)로 묶음
- key값을 이용해서 value를 찾음
b_dic = {1:"a", "b":[1, 2, 3], "c":3}
print(b_dic[1])
print(b_dic['b'])
print(b_dic['c'])
- 딕셔너리의 key값은 문자형과 숫자형 모두 가능하다
- value값은 다양한 자료형을 넣을 수 있다
✅ 추가
b_dic['d'] = 4
print(b_dic)
- 새로운 key값과 value를 입력하여 딕셔너리에 데이터를 추가할 수 있다
🧩 집합
a_set = set([1,2,3,4])
print(a_set)
- 중복이 없는 자료형
- set() 안에 []리스트 형태로 데이터를 넣는담
✅ 중복 제거
b_set = set([1,1,2,2,3,3,4,5,6])
print(b_set)
- 같은 원소를 집어 넣어도 중복을 제거하고 하나씩만 출력함
c_set = set("python40s")
print(c_set)
- 순서가 없다
- 정렬되지 않고 무작위로 값이 섞여 있다
👉🏻 사칙 연산
print("더하기:", 10+20)
print("빼기:", 10-20)
print("곱하기:", 10*20)
print("나누기:", 10/20)
- 곱하기는 영어 소문자와 혼동되지 않도록 *
print("c**2:", 10**2)
print("c**3:", 10**3)
print("c**4:", 10**4)
- 거듭제곱
✅ 몫과 나머지
print("몫:", 40//6)
print("나머지:", 40%6)
👉🏻 논리 연산
🧩 OR
print(0 or 0)
print(0 or 1)
print(1 or 0)
print(1 or 1)
print(False or False)
print(False or True)
print(True or False)
print(True or True)
- or 연산은 값이 하나라도 참인 경우에 참인 연산이다
- 0, 1은 int(숫자)형이고
- True, False는 Bool형이다
🧩 AND
print(0 and 0)
print(0 and 1)
print(1 and 0)
print(1 and 1)
print(False and False)
print(False and True)
print(True and False)
print(True and True)
- and 연산은 모든 값이 참이어야 참인 연산이다
- 모든 값이 1 이상이거나 True일 때만 참인 연산이다
🧩 NOT
print(not 0)
print(not 1)
print(not False)
print(not True)
- not은 자신의 상태를 반전시킨다
- True, False 두 상태만 가진다
👉🏻 비교 연산
print(10 == 10)
print(10 >= 10)
print(10 <= 10)
print(10 < 5)
print(10 > 5)
print(10 != 10)
🧩 in
- in은 리스트나 문자열에서 포함된 값을 비교한다
a_list = ['a', 2, 'hello', 3]
print('a' in a_list)
print(1 in a_list)
print('hello' in a_list)
print(3 in a_list)
- 리스트에 값이 포함되어있는지 확인하는 것
a_str = "hello python"
print('python' in a_str)
print('py' in a_str)
print('40' in a_str)
- 문자열에서 문자가 포함되어 있는지 확인하는 것
👉🏻 조건문
- 조건에 따라 코드를 실행하거나 실행하지 않게 만들 수 있다
a = 1
b = 1
if a == b:
print("두 개의 값은 같습니다")
if a != b:
print("두 개의 값은 같지 않습니다")
a = 1
b = 2
if a == b:
print("두 개의 값은 같습니다")
if a != b:
print("두 개의 값은 같지 않습니다")
🧩 if ~ elif ~ else
a = 1
b = 2
if a > b:
print("a의 값이 더 큽니다")
elif a < b:
print("b의 값이 더 큽니다")
else:
print("두 개의 값은 같습니다")
- 쌍으로 동작하며 위에서부터 조건을 비교하다가 만족하는 조건이 실행되면 다음의 조건은 실행되지 않고 건너 뛴다
🧩 연산자와 조건문
a = 1
b = 1
if a >= b:
print("a 값이 더 크거나 같습니다")
if a <= b:
print("a 값이 더 작거나 같습니다")
a = 1
b = 1
c = 2
d = 2
if a == b and c == d:
print("두 조건 모두 만족")
if a == b or c == d:
print("두 조건 중 하나라도 만족하면")
- a == b and c == d 도 만족하고 a == b or c == d도 만족해서 두 문장 다 나온다
a_str = 'hello python'
if a_str == 'hello python':
print("hello python 문자열이 같습니다")
if a_str == "hi python":
print("hi python 문자열이 같습니다")
if "hello" in a_str:
print("hello가 포함되어 있습니다")
if "hello" not in a_str:
print("hello가 포함되어 있지 않습니다")
if "hi" not in a_str:
print("hi가 포함되어 있지 않습니다")
a_list = ['안녕', 1, 2, '파이썬']
if "안녕" in a_list:
print("a_list에 안녕이 포함되어 있습니다")
if 2 in a_list:
print("a_list에 숫자 2가 포함되어 있습니다")
a_list = ["안녕", 1, 2, "파이썬"]
if "안녕" not in a_list:
print("a_list에 안녕 이 포함되어 있지 않습니다")
if 5 not in a_list:
print("a_list에 숫자 5는 없습니다")
👉🏻 반복문
- 어떠한 연산 혹은 기능을 반복적으로 실행해야할 대 사용하는 구문
🧩 for문
- 반복되는 부분이나 범위를 구체적으로 지정해서 실행
for i in range(7):
print(i)
for i in range(5, 10):
print(i)
- range의 범위를 지정할 수 있다
- (시작, 끝)으로 입력하고 끝은 끝으로 입력한 숫자 -1까지다
for i in range(10, 5, -1):
print(i)
- range함수의 3번재 인자에 -1을 입력하면 역순으로 출력이 가능하다
a_list = [1,2,3,4,5,'안녕', '하세요']
for i in a_list:
print(i)
a_str = "hello python"
for i in a_str:
print(i)
- 문자열 길이 만큼 반복해서 문자 하나하나를 가져옴
✅ enumerate
name_list = ["홍길동", "장다인", "김철수"]
age_list = [500, 5, 12]
for i, k in enumerate(name_list):
print("i=", i, end=' ')
print("k=", k)
- 리스트에서 위치와 값을 가져올 수 있다
- i는 리스트의 위치
- k는 리스트의 값
- end=" "는 " "에 빈 값이 들어갔기 때문에 종료 문자를 넣지 않겠다는 뜻
- " "에 값을 넣어주면 종료 문자가 들어감
- end=" "을 넣어주지 않으면 기본적으로 종료 문자는 줄바꿈이 들어간다. 줄바꿈을 하지 않기 위해서 end=" "을 사용
name_list = ["홍길동", "장다인", "김철수"]
age_list = [500, 5, 12]
for i, k in enumerate(name_list):
print(k, end=" ")
print(age_list[i])
for i, k in enumerate(name_list):
print(name_list[i], end=" ")
print(age_list[i])
- 이름 리스트와 나이 리스트를 하나의 for문을 이용해 출력해보기
- enumerate를 이용해 name_list의 길이(i)와 내용(k)을 가져옴
for i in range(len(name_list)):
print(name_list[i], end=" ")
print(age_list[i])
- 위의 방법이 헷갈린다면 이 코드로
✅ .append
test_list = [i for i in range(10)]
print(test_list)
test2_list = []
for i in range(10):
test2_list.append(i)
print(test2_list)
- for문을 이용하여 리스트에 값을 쉽게 넣을 수 있다
✅ 리스트 초기화
test_list = [i * 5 for i in range(10)]
print(test_list)
test2_list = [0 for i in range(10)]
print(test2_list)
🧩 while 문
- 참과 거짓을 기준으로 조건이 거짓이 되기 전까지 무한 반복적으로 실행
- 조건이 참일 때 계속 반복
- True 혹은 1 이상
a = 0
while a < 5:
print(a)
a = a + 1
a = 0
while True:
print(a)
a = a + 1
if a >= 5:
break
- a가 5보다 커지면 break를 만나 while문을 탈출한다
👉🏻 오류 및 예외처리
- 프로그램 언어를 사용하는 이유는 컴퓨터가 알아 들을 수 있는 기계어인 0과 1로 바꿔주는 역할
- 파이썬 언어는 파이썬 프로그램 언어를 인터프리터라고 하는 명령어 해석기를 통해 한 줄 한 줄 기계어로 번역하여 컴퓨터에게 전달
- 한 줄 한 줄 동작하기 때문에 에러가 발생하는 프로그램 이전까지는 잘 동작하다가 에러를 만나면 에러를 출력하고 종료한다
- 프로그램에서 에러가 발생할만한 코드에 예외처리를 하는 방법
asdfasdc
- 아무 의미가 없는 코드를 입력하면 에러가 발생한다
- NameError - 선언되지 않아 에러가 발생함
🧩 try: except:
try:
asdfasdc
except:
print("에러발생")
- try: 문에 에러가 발생하면 except:문을 실행한다
🧩 pass
try:
asdfasdc
except:
pass
print("에러를 무시")
- pass를 이용해 아무것도 하지 않고 넘어가기
🧩 Exception as e
try:
asdfasdc
except Exception as e:
print("에러 발생 원인:", e)
- e를 출력해보면 에러의 원인이 출력된다
- 프로그램이 멈추지 않고 프로그램 내에서 에러의 원인을 출력한다
👉🏻 함수
- 코드가 모여 있는 하나의 단위
def func():
print("안녕하세요")
print("파이썬과 40개의 작품들입니다")
func()
- 함수 안에 있다는 것은 들여쓰기를 통해 표현
def func():
print("안녕하세요")
print("파이썬과 40개의 작품들입니다")
for i in range(3):
func()
🧩 값 받기
def funcAdd(a, b):
return a + b
c = funcAdd(1, 2)
print(c)
def funcMux(a, b):
mux = a * b
return mux
c = funcMux(2, 3)
print(c)
🧩 여러개의 값 반환하기
def funcAddMux(a, b):
add = a + b
mux = a * b
return add, mux
a, b = funcAddMux(1, 3)
print(a, b)
👉🏻 클래스
- 클래스란 프로그램의 틀이다
- 클래스를 이용하여 틀을 만들고 그 틀대로 찍어 객체를 만들 수 있다
- 틀을 이용하여 객체를 찍어내면 되기 때문에 객체는 틀을 찍는 대로 생성 가능하다
class Greet:
def hello(self):
print("hello")
def hi(self):
print("hi")
human1 = Greet()
human2 = Greet()
human1.hello()
human2.hi()
human2.hello()
human1.hi()
- Greet 클래스 안에 hello함수와 hi함수가 있다
- 클래스 안의 함수는 메서드라고 한다
- human1 = Greet() → Greet이라는 클래스로 human1 객체를 찍어 생성했다 (human2도 마찬가지)
- 클래스로 객체를 생성했으면 객체는 클래스에서 만든 메서드(함수)를 사용할 수 있다
- human1.hello()를 이용해 hello메서드(함수)를 실행했다
- 하나의 클래스를 만든 후 객체를 생성하여 동작
🧩 __init__
- 클래스를 생성할 때 바로 실행된다
class Student():
def __init__(self, name, age, like):
self.name = name
self.age = age
self.like = like
def studentInfo(self):
print(f"이름:{self.name}, 나이:{self.age}, 좋아하는 것:{self.like}")
김철수 = Student("김철수", 17, "축구")
장다인 = Student("장다인", 5, "헬로카봇")
김철수.studentInfo()
장다인.studentInfo()
- Student()클래스 생성
- __init__메서드는 객체를 만들 때 자동으로 동작하는 메서드
- name, age, like를 입력받는다
- self는 자기 자신으로 클래스 메서드(함수)를 만들 때 꼭 붙여준다
- self.name, self.age, self.like는 Student() 클래스에서 사용하는 클래스 변수로 클래스 내에 다른 메서드(함수)에서 사용 가능하다
- 김철수 = Student("김철수", 17, "축구) → 김철수 객체를 만들고 이름, 나이, 좋아하는 것을 입력
- 김철수.studentInfo() → 김철수의 정보를 출력
🧩 클래스 상속
- 상속 받은 메서드(함수)를 사용할 때는 super()를 사용한다
- super()는 상위라는 뜻이 있다
class Mother():
def characteristic(self):
print("키가 크다")
print("공부를 잘한다")
class Daughter(Mother):
def characteristic(self):
super().characteristic()
print("운동을 잘한다")
엄마 = Mother()
딸 = Daughter()
print("엄마는")
엄마.characteristic()
print("딸은")
딸.characteristic()
- Mother() 클래스의 characteristic(self)는 "키가 크다", "공부를 잘한다"를 출력한다
- Daughter(Mother)클래스는 Mother 클래스를 상속받았고 Daughter()클래스의 charateristic(self)은 super().characteristic()로부터 상속 받은 "키가 크다", "공부를 잘한다"와 자기 자신이 잘하는 "운동을 잘한다"를 출력한다
- 딸은 엄마에게 '키가 크다'와 '공부를 잘한다'를 상속받고 자기 자신이 잘하는 '운동을 잘한다'도 함께 출력
class Mother:
def __init__(self):
print("키가 크다")
print("공부를 잘한다")
class Daughter(Mother):
def __init__(self):
super().__init__()
print("운동을 잘한다")
print("엄마는")
엄마 = Mother()
print("딸은")
딸 = Daughter()
- __init__을 이용해 객체를 생성하자마자 출력하기
- super().__init__()은 상속 받은 클래스의 __init__을 실행한다
🧩 추가 설명
✅ 클래스란?
파이썬 클래스(Class)는 객체 지향 프로그래밍(OOP)의 핵심 개념 중 하나로, 코드를 논리적으로 구조화하고 재사용성을 높이기 위한 도구입니다. 클래스는 데이터와 해당 데이터를 다루는 메서드(함수)들을 묶어 놓은 틀이라고 생각할 수 있습니다. 다른 언어에서는 "클래스"를 "객체"의 설계도라고도 부릅니다. 클래스는 코드를 구조화하고 재사용성을 높이기 위한 강력한 도구이며, 이를 이해하면 프로그래밍에서 더 나은 모듈화와 유지보수성을 얻을 수 있습니다.
여러 가지 특성과 행동을 갖춘 객체를 만들기 위한 설계 도면이라고 생각할 수 있습니다. 여기에서는 자동차라는 비유를 사용해 보겠습니다.
클래스의 정의
클래스는 자동차 공장의 설계 도면과 같습니다. 이 도면에는 자동차가 가져야 하는 특성(속성)과 할 수 있는 행동(메서드)들이 명시되어 있습니다.
class Car:
def __init__(self, model, year):
self.model = model
self.year = year
def start_engine(self):
print(f"{self.year}년식 {self.model} 자동차의 엔진이 작동합니다.")
def drive(self):
print(f"{self.model} 자동차가 달립니다.")
객체 생성
클래스는 설계 도면일 뿐, 실제로 사용할 자동차를 만들려면 설계 도면을 바탕으로 실체를 찍어내야 합니다. 이렇게 만들어진 것이 객체입니다.
my_car = Car(model="Sedan", year=2022)
속성과 메서드 사용
객체는 설계 도면에 따라 속성과 메서드를 가지고 있습니다. 속성은 자동차의 특성(모델, 연식)이고, 메서드는 자동차가 할 수 있는 행동(시동 걸기, 주행)입니다.
my_car.start_engine() # 출력: 2022년식 Sedan 자동차의 엔진이 작동합니다.
my_car.drive() # 출력: Sedan 자동차가 달립니다.
비유적으로 말하면, 클래스는 자동차의 설계 도면이며, 객체는 실제로 만들어진 자동차입니다. 설계 도면에는 어떤 특성을 가져야 하는지와 어떤 행동을 할 수 있는지에 대한 정보가 담겨 있습니다. 객체를 생성하면 그 설계 도면을 기반으로 실제 자동차를 만들어내고, 그 자동차는 설계 도면에 따라 움직이고 동작합니다.
✅ self(1)
self는 파이썬 클래스 내에서 사용되는 특별한 변수로, 현재 인스턴스(instance)를 나타냅니다. 클래스로부터 생성된 객체(인스턴스)는 각자 고유한 특성을 가지고 있어야 하는데, 이 특성을 나타내기 위해 self가 사용됩니다.
간단한 예시로 설명해보겠습니다. 아래는 자동차를 나타내는 클래스입니다.
class Car:
def __init__(self, model, year):
self.model = model
self.year = year
def display_info(self):
print(f"{self.year}년식 {self.model} 자동차입니다.")
여기에서 self는 현재 인스턴스를 가리키는데, __init__ 메서드에서 사용된 것을 보면 이해가 빠를 것입니다.
__init__ 메서드:
- __init__ 메서드는 클래스가 인스턴스화될 때 자동으로 호출되는 특별한 메서드입니다.
- self는 현재 생성되고 있는 인스턴스를 나타냅니다. 예를 들어, Car(model="Sedan", year=2022)를 호출하면 self는 이 새로운 Sedan 자동차를 가리키게 됩니다.
- self.model과 self.year은 해당 인스턴스의 속성으로 설정되어, 각각 Sedan과 2022와 같은 값을 갖습니다.
my_car = Car(model="Sedan", year=2022)
display_info 메서드:
- display_info 메서드에서도 self를 사용합니다. 이 메서드는 해당 자동차의 정보를 출력하는 역할을 합니다.
- self.year와 self.model을 사용하여 현재 인스턴스의 속성 값을 참조합니다.
my_car.display_info() # 출력: 2022년식 Sedan 자동차입니다.
self는 인스턴스의 속성과 메서드를 구분짓기 위한 용도로 사용됩니다. 이를 통해 클래스의 각 인스턴스는 자신만의 데이터를 가질 수 있고, 메서드는 해당 인스턴스의 데이터에 접근하여 작업을 수행할 수 있습니다. 이렇게 함으로써 여러 개의 객체를 각각 독립적으로 다룰 수 있게 되며, 객체 지향 프로그래밍의 핵심인 캡슐화와 유연성을 실현할 수 있습니다.
✅ self(2)
self를 인자로 받는 이유는 파이썬에서 메서드가 호출될 때 해당 메서드가 속한 인스턴스에 대한 정보를 전달하기 위해서입니다.
파이썬에서 클래스의 메서드는 항상 첫 번째 매개변수로 self를 가져야 합니다. 이는 메서드가 호출된 인스턴스를 명시적으로 받아들이게 되어 해당 인스턴스의 속성에 접근하거나 수정할 수 있게 됩니다.
예를 들어, 다음과 같은 클래스가 있다고 가정해봅시다:
class MyClass:
def __init__(self, value):
self.value = value
def display_value(self):
print(self.value)
여기에서 __init__ 메서드와 display_value 메서드는 모두 self를 첫 번째 매개변수로 가지고 있습니다. 이렇게 함으로써 객체를 생성하고 그 객체의 메서드를 호출할 때, 파이썬은 해당 객체를 메서드에 전달합니다.
obj = MyClass(value=42)
obj.display_value() # 출력: 42
이때, obj.display_value()가 호출되면 파이썬은 내부적으로 MyClass.display_value(obj)와 같이 호출합니다. 여기서 obj가 self로 전달되어 display_value 메서드 내에서 self.value와 같이 해당 객체의 속성에 접근할 수 있게 됩니다.
간단히 말해, self는 현재 인스턴스를 가리키며, 메서드가 호출될 때 파이썬이 자동으로 전달해주는 특별한 매개변수입니다. 이를 통해 클래스의 메서드는 인스턴스에 속한 데이터를 조작하거나 인스턴스의 상태를 변경할 수 있습니다.
✅ __init__
__init__은 파이썬 클래스에서 특별한 역할을 하는 메서드로, 인스턴스가 생성될 때 자동으로 호출되는 초기화 메서드입니다. __init__은 "initialize"의 약자로, 객체의 초기 상태를 설정하거나 속성을 초기화하는데 사용됩니다.
간단한 클래스를 통해 __init__의 역할을 설명해보겠습니다:
class Dog:
def __init__(self, name, age):
self.name = name
self.age = age
def bark(self):
print(f"{self.name}가 멍멍 짖습니다.")
여기서 __init__ 메서드는 두 개의 매개변수(self, name, age)를 가지고 있습니다.
self:
- self는 현재 생성되는 인스턴스를 가리키는 특별한 변수입니다. 이를 통해 다양한 인스턴스들은 각각 독립적인 속성을 가질 수 있습니다.
name과 age:
- 이 두 매개변수는 사용자가 객체를 생성할 때 제공하는 정보입니다.
- self.name과 self.age는 해당 인스턴스의 속성으로 설정되어, 각 인스턴스마다 다른 이름과 나이를 가지게 됩니다.
my_dog = Dog(name="Buddy", age=3)
위 코드에서 __init__ 메서드는 my_dog라는 인스턴스가 생성될 때 호출되며, name에 "Buddy", age에 3이라는 값이 전달됩니다. 이로써 my_dog 객체는 초기화될 때 고유한 이름과 나이를 갖게 됩니다.
__init__ 메서드는 마치 자동차 공장에서 생산된 자동차의 초기 설정을 담당하는 작업장과 비슷합니다. 자동차가 만들어질 때마다 해당 작업장에서 초기에 필요한 작업들을 수행하여 각 자동차가 자신만의 특성을 가지도록 합니다. 이 작업장이 __init__ 메서드 역할을 하며, 각 자동차가 만들어질 때 자동으로 호출되어 초기화 작업을 수행합니다.
즉, __init__ 메서드는 객체의 생성과 동시에 호출되어 객체를 초기화하는 역할을 합니다. 객체가 생성될 때마다 호출되므로, 각 객체는 자신만의 초기 상태를 가지게 됩니다.
👉🏻 주석
# 주석입니다
# 사용자 설명 코드입니다
print("hello") # 코드의 끝에 사용할 수 있습니다
"""
여러 줄을 입력할 때는
쌍따옴표 3개로 시작하고
쌍따옴표 3개로 종료하면
여러 줄을 입력할 수 있습니다
"""
a_str = """
여러 줄의
문자열을 입력할 때도
쌍따옴표 또는 따옴표
3개를 사용할 수 있습니다
"""
print(a_str)
👉🏻 import
import random
print(random.randint(1, 100))
- random라이브러리는 무작위 값을 반환하는 기능이 있다
import random as rd
print(rd.randint(1, 100))
- rd라는 이름을 붙여 불러온다
- 코드에서는 rd로 사용한다
from random import randint
print(randint(1, 100))
- random라이브러리에서 특수한 기능만 불러오기
from random import *
print(randint(1, 100))
- 모든 기능 불러오기
출처: 만들면서 배우는 파이썬과 40개의 작품들
'Python > Python_Advanced' 카테고리의 다른 글
[파이썬40작] 03. 텍스트를 음성으로 변환하기 (1) | 2024.02.03 |
---|---|
[파이썬40작] 02. 컴퓨터 내외부 IP 확인하기 (0) | 2024.01.30 |
[파이썬40작] 01. 숫자 맞추기 게임 만들기 (1) | 2024.01.23 |