# 이 블로그는 공부용 블로그로, 틀린 부분이 있을 수 있으며, 계속해서 수정합니다.
class는 데이터와 데이터를 처리하는 메소드(클래스 내부에서 만든 함수)를 가지고 있는 자료형이다.
클래스 이름은 다른 변수와 헷갈리지 않게 하기 위해서 일반적으로 첫 문자를 대문자로 만들어 사용한다.
생성자(초기자) 메소드를 만든다. => __init__()
생성자(construnctor)란, 객체(클래스로 만든 변수)가 생성될 때 자동으로 실행되는 함수로 class 멤버 변수를 초기화 시키는 목적으로 사용된다.
self 는 클래스 자기 자신을 의미하며 객체가 생성될 때 자기 자신이 전달된다.
메소드의 첫 번째 인수는 무조건 self 를 사용한다.
def __init__(self):
멤버 변수 초기화
변수 이름 앞에 'self.'이 붙은 변수를 멤버 변수라 부르고 멤버 변수는 클래스 전체에서 사용할 수 있다.
변수 이름 앞에 'self.'이 붙지 않은 변수를 지역 변수라 부르고 지역 변수는 변수가 선언된 메소드 내부에서만 사용할 수 있다.
클래스에 저장된 데이터 출력에 사용하는 함수 => __str__() => java 에서 toString() 메소드와 같은 기능을 합니다.
def __str__(self):
return 뒤의 출력할 내용은 반드시 문자열 형태로 코딩해야 한다.
return 출력할 내용
자바의 경우, toString 으로 메모리가 잘 들어갔는지 확인해야함.
클래스 안의 데이터를 출력할 때 str를 적지 않으면, 주소를 가져올 뿐 내용 확인이 불가능하다.
init => 생성자, str => 클래스 안 내용 출력 이 두 가지는 반드시 작성해야함.
예)
1
2
3
4
5
6
7
8
9
10
11
12
13
|
class Calculator: # 첫 문자를 대문자로
def __init__(self, *num): # * => 변수 앞에 '*' 을 붙여주면 가변 인자를 받는 튜플이 된다.
# print('Calculator 클래스의 객체가 생성될 때 자동으로 실행됩니다.')
self.first = 0; self.second = 0; self.third = 0 # self 라는 말이 붙어있지 않아서 지역변수임. 지역변수는 자기가 선언된 함수 안에서만 사용될 수 있다.
if len(num) == 1:
self.first = num[0]
elif len(num) == 2:
self.first = num[0]; self.second = num[1]
elif len(num) == 3:
self.first = num[0]; self.second = num[1]; self.third = num[2]
def __str__(self):
# return '__str__() 메소드가 리턴하는 내용입니다.'
return str(self.first + self.second + self.third)
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
# 첫 문자를 대문자로
class Score:
# 생성자 함수로 Score 클래스의 객체가 생성될 때 이름과 3과목의 점수를 넘겨받아 멤버 변수를 초기화한다.
def __init__(self, name, python, java, jsp):
# 'self.' 이 앞에 붙은 변수를 멤버 변수라 부르고, 붙지 않은 변수는 지역 변수라 부른다.
# 멤버 변수는 클래스 전체에서 사용된다. => 클래스 내부의 모든 함수에서 사용할 수 있다.
# 지역 변수는 선언된 함수 내부에서만 사용 가능하다. => 다른 함수에서는 사용할 수 없다.
self.name = name # self. 을 붙여서 멤버 변수가 되어, 생성자 밖에서도 사용할 수 있다. ex) this.
self.python = python
self.java = java
self.jsp = jsp
self.total = python + java + jsp # 입력한 기본 데이터를 가지고 계산한 데이터
self.mean = self.total / 3
# __str # 줄 잘 맞춰서
def __str__(self):
return '이름 : {}, python : {}, java : {}, jsp : {}, total : {}, mean : {}'.format(self.name, self.python, self.java, self.jsp, self.total, self.mean) # \ 는 같은 줄 취급, ; => 한 줄에 여러줄 코딩 가능
|
cs |
1
2
3
4
5
|
score1 = Score('홍길동', 100, 100, 99) # def __init__ 으로 넘어가서 self. 에서 초기화 됨.
print(score1)
score2 = Score('임꺽정', 65, 74, 45) # def __init__ 으로 넘어가서 self. 에서 초기화 됨.
print(score2)
|
cs |
출력값 :
이름 : 홍길동, python : 100, java : 100, jsp : 99, total : 299, mean : 99.66666666666667
이름 : 임꺽정, python : 65, java : 74, jsp : 45, total : 184, mean : 61.333333333333336
'python' 카테고리의 다른 글
python/파이썬/웹크롤링/웹크롤러/crawling (0) | 2019.12.31 |
---|---|
파이썬/python/마방진 문제 (0) | 2019.12.27 |
python/파이썬/지그재그정렬 (0) | 2019.12.27 |
파이썬/python/달팽이 배열 (1) | 2019.12.27 |
파이썬/python/주민등록번호검증문제 (0) | 2019.12.26 |