Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
Tags
- 주피터노트북데이터분석
- SQL
- 데이터분석시각화
- 판다스데이터분석
- 파이썬시각화
- 파이썬수업
- 파이썬차트
- SQL수업
- 주피터노트북판다스
- 파이썬데이터분석주피터노트북
- 맷플롯립
- 팀플기록
- python알고리즘
- 주피터노트북
- 주피터노트북맷플롯립
- 파이썬데이터분석
- matplotlib
- 수업기록
- sql연습하기
- 파이썬크롤링
- 파이썬
- Python
- 파이썬알고리즘
- 주피터노트북그래프
- SQLSCOTT
- python수업
- sql따라하기
- sql연습
- python데이터분석
- 판다스그래프
Archives
- Today
- Total
IT_developers
Python 개념 및 실습 - 클래스(1) 본문
파이썬 클래스
- 클래스를 꼭 필요로 하진않음.
- 클래스를 만들어 놓으면 계속 불러서 쓸 수 있음
- 안할 땐 변수로 가능
클래스 사용하지 않고 학생 3명의 정보
변수 사용해서 학생 3명 입력. 변수명이 중복 불가.
# 학생 1
student_name1 = "Kim"
student_number_1 = 1
student_grade_1 = 1
student_detail_1 = [{"gender": "male"}, {"score1": 97}, {"score2": 88}]
# 학생 2
student_name2 = "Park"
student_number_2 = 2
student_grade_2 = 2
student_detail_2 = [{"gender": "female"}, {"score1": 87}, {"score2": 96}]
# 학생 3
student_name3 = "Choi"
student_number_3 = 3
student_grade_3 = 3
student_detail_3 = [{"gender": "male"}, {"score1": 66}, {"score2": 78}]
# 변수 사용은 효율성이 떨어짐
print(
"이름: %s, 학번 : %d, 학년 : %d, 학생정보 : %s"
% (student_name1, student_number_1, student_grade_1, student_detail_1)
)
print(
"이름: %s, 학번 : %d, 학년 : %d, 학생정보 : %s"
% (student_name2, student_number_2, student_grade_2, student_detail_2)
)
print(
"이름: %s, 학번 : %d, 학년 : %d, 학생정보 : %s"
% (student_name3, student_number_3, student_grade_3, student_detail_3)
)
list : 서로 다른 내용도 한번에 담아서 처리 가능. 다양한 자료구조
student_name_list = ["Kim", "Park", "Choi"]
student_numbers_list = [1, 2, 3]
student_grade_list = [1, 2, 3]
student_details_list = [
{"gender": "male", "score1": 97, "score2": 88},
{"gender": "female", "score1": 87, "score2": 96},
{"gender": "male", "score1": 66, "score2": 78},
]
print(student_name_list)
print(student_numbers_list)
print(student_grade_list)
print(student_details_list)
# Park 학생 정보 삭제
student_name_list = ["Kim", "Park", "Choi"]
student_numbers_list = [1, 2, 3]
student_grade_list = [1, 2, 3]
student_details_list = [
{"gender": "male", "score1": 97, "score2": 88},
{"gender": "female", "score1": 87, "score2": 96},
{"gender": "male", "score1": 66, "score2": 78},
]
# 삭제
del student_name_list[1]
del student_numbers_list[1]
del student_grade_list[1]
del student_details_list[1]
# 출력
print(student_name_list)
print(student_numbers_list)
print(student_grade_list)
print(student_details_list)
# 특정 학생만 출력
student_name_list = ["Kim", "Park", "Choi"]
student_numbers_list = [1, 2, 3]
student_grade_list = [1, 2, 3]
student_details_list = [
{"gender": "male", "score1": 97, "score2": 88},
{"gender": "female", "score1": 87, "score2": 96},
{"gender": "male", "score1": 66, "score2": 78},
]
print(student_name_list[0])
print(student_numbers_list[0])
print(student_grade_list[0])
print(student_details_list[0])
클래스
class Student(): # 괄호는 필수 아님
# __init__: 자동완성. 자바의 생성자와 같은 개념
# self : 자바의 this와 같은 개념
def __init__(self, name, number, grade, details):
self.name = name
self.number = number
self.grade = grade
self.details = details
# 객체 생성
student1 = Student("Kim", 1, 1, {"gender": "male", "score1": 97, "score2": 88})
student2 = Student("Park", 2, 2, {"gender": "female", "score1": 87, "score2": 96})
student3 = Student("Choi", 3, 3, {"gender": "male", "score1": 66, "score2": 78})
print(student1)
print(student2)
print(student3)
해당 객체에 포함된 16진수 값 출력. 주소값 출력
# toString()
class Student:
def __init__(self, name, number, grade, details):
self.name = name
self.number = number
self.grade = grade
self.details = details
#__str__ : 자바에서의 toString()개념
def __str__(self):
return "name : {}, number : {}, grade : {}, details : {}".format(
self.name, self.number, self.grade, self.details
)
# 객체 생성
student1 = Student("Kim", 1, 1, {"gender": "male", "score1": 97, "score2": 88})
student2 = Student("Park", 2, 2, {"gender": "female", "score1": 87, "score2": 96})
student3 = Student("Choi", 3, 3, {"gender": "male", "score1": 66, "score2": 78})
print(student1)
print(student2)
print(student3)
자바에서 클래스
class Student{
private String name;
private int number;
public Student(String name, int number...){
this.name = name;
}
public String toString(){
return "name : " + name..
}
}
멤버 변수 선언을 안해도 됨.
self 키워드를 붙임.
"""
설명글 작성 ==> 설명하는 글 불러서 쓸 수 있음
"""
인스턴스 메소드 : self 키워드가 필요, 멤버 변수 선언,
# UserInfo 클래스
class UserInfo:
"""
UserInfo class
Author : 홍길동
Date : 2022-05-26
Description : 클래스 작성법
"""
def user_info(self):
print("메소드 실행")
# 객체 생성
user1 = UserInfo()
# 메소드 호출
user1.user_info()
# 생성자 : __init__ 사용
class UserInfo:
"""
UserInfo class
Author : 홍길동
Date : 2022-05-26
Description : 클래스 작성법
"""
# 자바에서의 default 생성자와 동일
def __init__(self) -> None:
self.name = "홍길동"
self.age = 25
def user_info(self):
# def __init__(self) -> None: 하지 않으면 AttributeError: 'UserInfo' object has no attribute 'name'
return "name : {}, age : {}".format(self.name, self.age)
user1 = UserInfo()
print(user1.user_info())
![](https://blog.kakaocdn.net/dn/ce6z0N/btrDKINkAIn/VGdOz1yC7wjxJ37NARx8KK/img.png)
# Car 클래스
class Car:
# 멤버 변수
color = ""
speed = 0
def upSpeed(self, value):
self.speed += value
def downSpeed(self, value):
self.speed -= value
# 객체 생성
car1 = Car()
car1.speed = 0
car1.color = "Red"
car2 = Car()
car2.speed = 0
car2.color = "Blue"
car3 = Car()
car3.speed = 0
car3.color = "Yellow"
car1.upSpeed(30)
print("car1 색상 : {}, 속도 {}km".format(car1.color, car1.speed))
car2.upSpeed(100)
car2.downSpeed(20)
print("car2 색상 : {}, 속도 {}km".format(car2.color, car2.speed))
car3.upSpeed(40)
print("car3 색상 : {}, 속도 {}km".format(car3.color, car3.speed))
# 생성자 : __init__ 사용
class Car:
"""
UserInfo class
Author : 홍길동
Date : 2022-05-26
Description : 클래스 작성법
"""
def __init__(self) -> None:
self.color = "Red"
self.speed = 0
def upSpeed(self, value):
self.speed += value
def downSpeed(self, value):
self.speed -= value
car1 = Car()
car2 = Car()
car2.speed = 0
car2.color = "Blue"
car1.upSpeed(30)
print("car1 색상 : {}, 속도 {}km".format(car1.color, car1.speed))
car2.upSpeed(100)
car2.downSpeed(20)
print("car2 색상 : {}, 속도 {}km".format(car2.color, car2.speed))
print(Car.__doc__) # __doc__ : 주석 값 읽어옴. 값이 없다면 None 출력
클래스 변수 : 반드시 선언 필요,
호출시 : 클래스 이름. 클래스 변수 사용
class UserInfo:
"""
UserInfo class
Author : 홍길동
Date : 2022-05-26
Description : 클래스 작성법
"""
user_cnt = 0
def __init__(self, name, age) -> None:
# self를 붙이면 객체가 개별로 가지고 있는 멤버 변수
self.name = name
self.age = age
self.user_cnt += 1
def user_info(self):
return "name : {}, age : {}, user_cnt : {}".format(
self.name, self.age, self.user_cnt
)
![](https://blog.kakaocdn.net/dn/wpPOT/btrDJw0Lak0/DiCrkKNUOrfVtB7XEzuRL1/img.png)
# self ==> 클래스로 변경
class UserInfo:
"""
UserInfo class
Author : 홍길동
Date : 2022-05-26
Description : 클래스 작성법
"""
user_cnt = 0
def __init__(self, name, age) -> None:
# self를 붙이면 객체가 개별로 가지고 있는 멤버 변수
self.name = name
self.age = age
# self.user_cnt += 1
# 클래스 변수 : class이름을 붙이면 static 과 같은 개념
UserInfo.user_cnt += 1
def user_info(self):
return "name : {}, age : {}, user_cnt : {}".format(
self.name, self.age, self.user_cnt
)
user_cnt = 0 ==> 막으면 에러 발생.
클래스 변수는 꼭 선언해야함.
![](https://blog.kakaocdn.net/dn/bY0wLe/btrDHGoJP6L/t9RiXHeBKmVhWDTZ8Um5Vk/img.png)
class UserInfo:
"""
UserInfo class
Author : 홍길동
Date : 2022-05-26
Description : 클래스 작성법
"""
user_cnt = 0
def __init__(self, name, age) -> None:
self.name = name
self.age = age
UserInfo.user_cnt += 1
def user_info(self):
return "name : {}, age : {}".format(self.name, self.age)
def __del__(self):
UserInfo.user_cnt -= 1
user1 = UserInfo("홍길동", 25)
user2 = UserInfo("성춘향", 26)
print(user1.user_info())
print(user2.user_info())
print("현재 생성된 User {}명".format(UserInfo.user_cnt))![](https://blog.kakaocdn.net/dn/cw2lhj/btrDGLRmlJL/mbNMRvUFws5NBkfOqPDnU0/img.png)
![](https://blog.kakaocdn.net/dn/cw2lhj/btrDGLRmlJL/mbNMRvUFws5NBkfOqPDnU0/img.png)
class UserInfo:
"""
UserInfo class
Author : 홍길동
Date : 2022-05-26
Description : 클래스 작성법
"""
user_cnt = 0
def __init__(self, name, age) -> None:
# self를 붙이면 객체가 개별로 가지고 있는 멤버 변수
self.name = name
self.age = age
self.user_cnt
# 클래스 변수 : class이름을 붙이면 static 과 같은 개념
UserInfo.user_cnt += 1
def user_info(self):
return "name : {}, age : {}".format(self.name, self.age)
def __del__(self):
UserInfo.user_cnt -= 1
user1 = UserInfo("홍길동", 25)
user2 = UserInfo("성춘향", 26)
print(user1.user_info())
print(user2.user_info())
print("현재 생성된 User {}명".format(UserInfo.user_cnt))
![](https://blog.kakaocdn.net/dn/bSdbtU/btrDFLdPx2m/QpxMQQOlk2q0p4unoHiO2K/img.png)
# 객체 삭제
del user1 # __del__호출됨
print("현재 생성된 User {}명".format(UserInfo.user_cnt))
'Python' 카테고리의 다른 글
Python 개념 및 실습 - 클래스(3) (0) | 2022.09.11 |
---|---|
Python 개념 및 실습 - 클래스(2) (0) | 2022.09.11 |
Python 개념 및 실습 - 파일 읽고 쓰기(4) (0) | 2022.09.10 |
Python 개념 및 실습 - 파일 읽고 쓰기(3) (0) | 2022.09.10 |
Python 개념 및 실습 - 파일 읽고 쓰기(2) (0) | 2022.09.09 |
Comments