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
													
											
												
												- matplotlib
- SQL
- 맷플롯립
- 주피터노트북판다스
- SQLSCOTT
- python데이터분석
- 주피터노트북그래프
- sql연습
- 파이썬
- 주피터노트북맷플롯립
- 수업기록
- 팀플기록
- 파이썬데이터분석주피터노트북
- 파이썬데이터분석
- 파이썬크롤링
- 파이썬알고리즘
- 판다스데이터분석
- 파이썬차트
- sql따라하기
- python알고리즘
- 파이썬시각화
- python수업
- 주피터노트북
- SQL수업
- 데이터분석시각화
- Python
- 주피터노트북데이터분석
- sql연습하기
- 판다스그래프
- 파이썬수업
													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())

# 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
        )

# 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 ==> 막으면 에러 발생.
클래스 변수는 꼭 선언해야함.

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))
 
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))

# 객체 삭제
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
			
		
	
               
           
					
					
					
					
					
					
				 
             
								 
								 
								