μ½λ - ν¨μΊ μμ μ½λ μ°Έκ³ (ν¨μΊ μμ μ 리)
<μ΄μ κΈ>
https://silvercoding.tistory.com/19
[python μ¬ν] 2. ν΄λμ€ κΈ°μ΄, ν΄λμ€ λ³μ , μΈμ€ν΄μ€ λ³μ
μ½λ - ν¨μΊ μμ μ½λ μ°Έκ³ (ν¨μΊ μμ μ 리) <μ΄μ κΈ> https://silvercoding.tistory.com/18 [python μ¬ν] 1. κ°μ²΄μ§ν₯(OOP), ν΄λμ€ κΈ°μ΄ μ¬μ© μ½λ - ν¨μΊ μμ μ½λ μ°Έκ³ 1. κ°μ²΄μ§ν₯ vs μ μ°¨μ§ν₯ κ°λ¨ν..
silvercoding.tistory.com
- ν΄λμ€ νμ₯
μ΄λ²μλ ν΄λμ€μ μΈμ€ν΄μ€ λ©μλ, ν΄λμ€ λ©μλ , μ€ν μ΄ν± λ©μλλ₯Ό ꡬνμ ν΄ λ³Έλ€.
class Student(object):
"""
Student Class
Author : Kim
Date : 2021. 6. 28
Description : Class, Static, Instance Method
"""
# Class Variable
tuition_per = 1.0
def __init__(self, id, first_name, last_name, email, grade, tuition, gpa):
self._id = id
self._first_name = first_name
self._last_name = last_name
self._email = email
self._grade = grade
self._tuition = tuition
self._gpa = gpa
# Instance Method
def full_name(self):
return "{}, {}".format(self._first_name, self._last_name)
# Instance Method
def detail_info(self):
return 'Student Detail Info : {}, {}, {}, {}, {}, {}'.format(self._id, self.full_name(), self._email, self._grade, self._tuition, self._gpa)
# Instance Method
def get_fee(self):
return 'Beforoe Tuition -> Id : {}, fee : {}'.format(self._id, self._tuition)
# Instance Method
def get_fee_culc(self):
return 'After tuition -> Id : {}, fee : {}'.format(self._id, self._tuition * Student.tuition_per)
# Instance Method
def __str__(self):
return 'Student Info -> name : {} grade : {} email : {}'.format(self.full_name(), self._grade, self._email)
# Class Method
@classmethod
def raise_fee(cls, per):
if per <= 1:
print('Please Enter 1 or More')
return
Student.tuition_per = per
print('Succeed! tuition increased.')
# Class Method
@classmethod
def student_const(cls, id, first_name, last_name, email, grade, tuition, gpa):
return cls(id, first_name, last_name, email, grade, tuition * cls.tuition_per, gpa)
# Static Method
@staticmethod # ---> μμλ μ μ°μ§ μλλ€.
def is_scolarship_st(inst):
if inst._gpa >= 4.3:
return '{} is a scholarship recipient'.format(inst._last_name)
return 'Sorry, Not a scholarship recipient'
Instance Methodλ selfμ μ κ·Όμ(κ°κ°μΈ, κ³ μ ν κ°μ²΄)λ₯Ό μ΄μ©νμ¬ μμ±μ μ κ·Όν μ μλ€. 첫λ²μ§Έ μΈμμ selfκ° λ€μ΄κ°λ κ²μ μΈμ€ν΄μ€ λ©μλλΌκ³ μκ°μ νλ©΄ λλ€.
Class Method 첫λ²μ§Έ μΈμλ‘ ν΄λμ€λ₯Ό λ°μμ£Όμ΄μΌ νλ€. λλΆλΆ clsλΌκ³ μ΄λ€. λ , λ©μλλ₯Ό μμ±νκΈ° μ μ λ°μ½λ μ΄ν°λ₯Ό μμ±ν΄ μ£Όμ΄μΌ νλ€. (@classmethod) ν΄λμ€ μμ²΄λ‘ μ κ·Όν μ μλ€.
Static Method μΌλ° ν¨μμ κΈ°λ₯μ νλ λ©μλμ΄λ€. μ¦, ν΄λμ€ μμ κ΅³μ΄ λ£μ§ μμλ λκ³ ν΄λμ€ λ°μμ μμ±ν΄λ λλ λ©μλμ΄λ€. κ·Έλλ μμμ²λΌ μ₯νκΈ λ°λμ§μ λν μ¬λΆλ studentν΄λμ€μ μ°κ΄μ΄ λμ΄μμΌλ―λ‘ μμ μ¨μ£Όλ κ²μ΄ λ 보기 νΈν κ²μ΄λ€.
- μΈμ€ν΄μ€ μμ±
student_1 = Student(1, 'Kim', "silver", 'student1@naver.com', '1', 400, 3.5)
student_2 = Student(2, 'Han', "golye", 'student2@daum.net', '2', 500, 4.3)
# κΈ°λ³Έμ 보
print(student_1)
print(student_2)
print()
# μ 체 μ 보
print(student_1.detail_info())
print(student_2.detail_info())
- λ±λ‘κΈ
# νλΉ μ 보 (λ±λ‘κΈ μΈμ μ )
print(student_1.get_fee())
print(student_2.get_fee())
* νλΉ μΈμ (ν΄λμ€ λ©μλ μ¬μ©)
# νλΉ μΈμ (ν΄λμ€ λ©μλ λ―Έμ¬μ©) ---> μ΄λ κ² μ§μ μ κ·Όνλ κ±° μ’μ§ μλ€.
# Student.tuition_per = 1.2
# νλΉ μΈμ (ν΄λμ€ λ©μλ μ¬μ©)
Student.raise_fee(1.2)
* μΈμ μν¨ νμ νλΉ μ 보
print(student_1.get_fee_culc())
print(student_2.get_fee_culc())
- ν΄λμ€ λ©μλλ₯Ό μ΄μ©νμ¬ μΈμ€ν΄μ€ μμ±νκΈ°
student_3 = Student.student_const(3, 'Park', 'silver', 'Student3@gmail.com', '3', 550, 4.5)
student_4 = Student.student_const(4, 'Cho', 'golye', 'student4@gmail.com', '4', 600, 4.1)
Class Methodλ‘ μμ±ν΄ λμλ student_constλ₯Ό μ΄μ©νμ¬ μΈμ€ν΄μ€λ₯Ό μμ±ν μλ μλ€.
*** λκ°μ΄ μ€μ΅
# μ 체 μ 보
print(student_3.detail_info())
print(student_4.detail_info())
print()
# νμ νλΉ λ³κ²½ νμΈ
print(student_3._tuition)
print(student_4._tuition)
print()
- Static Method λ₯Ό μ΄μ©νμ¬ μ₯νκΈ νν μ¬λΆ μμ보기
(1) static method λ―Έμ¬μ©
def is_scholarship(inst):
if inst._gpa >= 4.3:
return '{} is a scholarship recipient'.format(inst._last_name)
return 'Sorry, Not a scholarship recipient'
μ΄μ²λΌ ν΄λμ€ μμ κ΅³μ΄ λ£μ§ μμλ μ¬μ© κ°λ₯νλ€.
* μ¬μ©
print(is_scholarship(student_1))
print(is_scholarship(student_2))
print(is_scholarship(student_3))
print(is_scholarship(student_4))
μ΄λ κ² ν¨μμ μΈμ€ν΄μ€λ₯Ό λ£μ΄μ£Όλ©΄ μ₯νκΈ λμ μ¬λΆκ° λ°νλλ€.
(2) static method μ¬μ©
Student ν΄λμ€ μμ ꡬνν΄ λμ static methodμ μ κ·Όνλ λ°©λ²μ΄λ€.
print(Student.is_scolarship_st(student_1))
print(Student.is_scolarship_st(student_2))
print(Student.is_scolarship_st(student_3))
print(Student.is_scolarship_st(student_4))
print(student_1.is_scolarship_st(student_1))
print(student_2.is_scolarship_st(student_2))
print(student_3.is_scolarship_st(student_3))
print(student_4.is_scolarship_st(student_4))
Student ν΄λμ€ μμ²΄λ‘ μ κ·Όμ΄ κ°λ₯νκ³ , κ°μ²΄λ₯Ό ν΅ν μ κ·Ό λν κ°λ₯νλ€.