self는 클래스로 생성한 변수 (==인스턴스) 자신의 주소를 나타내는 키워드입니다.
이렇게 자신의 주소를 나타내야 하는 이유는, 인스턴스는 양식은 같지만
class Computer:
cpu = ""
ram = 0
ssd = 0
# 메서드는 기본적으로 대부분의경우 self를 파라미터로 선언해주셔야합니다.
# 변수 지칭시에도 self.변수명을 사용합니다.
def get_info(self):
print("cpu : %s, ram : %sGb, ssd : %sGb" % (self.cpu, self.ram, self.ssd))
def get_self_add(self):
print(self)
c1 = Computer()
print(c1)
c1.get_self_add()
print(c1)

Computer라는 클래스를 선언한다

c1이라는 인스턴스를 생성한다(클래스 Computer의 객체)

print문에 의해 c1의 주소값이 출력된다

14번 c1.get_self_add()에서 c1의 주소값을 가지고 9번으로 돌아가 함수를 실행한다

self에 c1의 주소값을 대입해 print문을 실행한다
c1의 주소값이 콘솔창에 출력된다

리턴이 없으므로 None값이 전달된다. 함수의 실행이 끝나면 스택에 할당된 공간은 사라진다.

10번 행에서 함수의 실행을 마치고 다시 14번으로 돌아온다. 리턴값이 없으므로 아무것도 출력되지 않는다

print문으로 한번더 출력된다.
# 내용물을 좀 더 편하게 초기화시킬수 있도록 클래스를 다시 정의합니다.
class Teacher:
name = ""
subject = ""
age = 0
# 위 3개 변수에 값을 한 줄로 넣어주는 메서드(함수)
def save_info(self, n, s, a):
self.name = n
self.subject = s
self.age = a
# 강사 객체를 생성해보세요.
# 이름은 알아서, 과목도 알아서, 나이도 알아서 지정해주시면 됩니다.
# 그리고 메모리구조를 그려주세요.
p1 = Teacher()
p1.name = "유재석"
p1.subject = "도덕"
p1.age = 35
p2 = Teacher()
p2.name = "김태호"
p2.subject = "경제"
p2.age = 42

p3 = Teacher()
p3.save_info("박명수", "cs", 20)
print(p3.name, p3.subject, p3.age)
멤버변수(field)
name = ""
subject = ""
age = 0
멤버함수 또는 메서드
(가상함수로 취급됨)
def save_info(self, n, s, a):
`
((self, n, s, a)이것들은 멤버변수라고 하지
않는다)
클래스 내부에 __init__ 이라는 명칭으로 선언한 함수는 생성자 함수가 됩니다.
생성자 함수를 정의하면 사용자가 클래스의 인스턴스를 생성할 때 반드시 입력해야 하는 요소를 강제로 입력해야만 하는 상황을 만들어줄 수 있습니다.
class Cat:
name = ""
weight = 0
color = ""
gender = ""
# 아래 함수는 생성자 함수로 생성시 자동으로 1번만 호출되는 함수
def __init__(self, name, weight, color, gender):
self.name = name
self.weight = weight
self.color = color
self.gender = gender
# init함수를 선언했을때 함수를 호출하려면 인자를 넣어줘야 한다
그렇지 않으면 에러난다
cat1 = Cat()

cat1 = Cat("로로",6,"white","암컷")
print(cat1.name, cat1.weight, cat1.color, cat1.gender)

# 1. cat1에 대해서 상세 정보를 조회할 수 있는 함수 get_info() 와
# print("야옹야옹")을 실행해주는 함수 meow()를 정의해주시고 호출해주세요.
class Cat:
# 특정 대상의 "상태"
name = ""
weight = 0
color = ""
gender = ""
db = 0 # 데시벨
# 메서드는 특정 대상의 행동이며, 결과를 상태(변수)값에 따라 달라진다.
# 아래 함수는 생성자 함수로 생성시 자동으로 1번만 호출되는 함수
def __init__(self, a, weight, color, gender, db):
self.name = a
self.weight = weight
self.color = color
self.gender = gender
self.db = db
def get_info(self):
print("이름 : %s 몸무게: %s 색깔: %s 성별: %s 울음소리: %sdb"
% (self.name, self.weight, self.color, self.gender, self.db))
def meow(self):
print("야옹야옹" * (self.db // 10))
cat1 = Cat("로로",6,"white","암컷", 30)
cat1.get_info()
cat1.meow()

class Supplement:
date = ""
injest = ""
type = ""
def __init__(self, date, injest, type):
self.date = date
self.injest = injest
self.type = type
def get_info(self):
print("날짜 : %s 섭취여부: %s, 종류: %s" %(self.date, self.injest, self.type))
def task(self):
print("영양제 챙겨먹기")
today1 = Supplement("1017", "True", "vitamin")
today1.get_info()
today1.task()
