λ°μν
π ν΄λΉ ν¬μ€ν μ μΈνλ°μ νμ΄μ¬ μ€κΈ κ°μλ₯Ό 곡λΆνλ©΄μ 볡μ΅μ°¨μμΌλ‘ μ 리ν ν¬μ€ν μ λλ€. ν΄λΉ λ΄μ©μ μ£Όλ‘ λ³ΈμΈμ 볡μ΅μ©μ΄λΌμ μμΈν μ€λͺ μ μλ μ μν΄ λΆνλλ¦¬κ² μ΅λλ€. μλ³Έ μ½λλ μ¬κΈ°μ μμ΅λλ€.
κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°(OOP)λ μ½λμ μ¬μ¬μ©κ³Ό μ½λ μ€λ³΅μ λ°©μ§νκΈ° μν νλ‘κ·Έλλ° λ°©λ²μ΄λ€. μ΄λ² ν¬μ€ν μμ Python ν΄λμ€μ λ©μλμ λν μ¬μ©λ²μ λν΄ μμ μ½λλ‘ μμ보μ.
class Car(object):
def __init__(self, company, detail):
self._company = company
self._detail = detail
# Pythonμ λ΄μ₯λμ΄ μλ λ©μλλ₯Ό νμ©ν΄μ μΈμ€ν΄μ€μ μλ μ 보 μΆλ ₯ κ°λ₯
# __str__μ μ¬μ©μ μ
μ₯μμ μ¬μ©νλ μΆλ ₯ λ©μλ
def __str__(self):
return f"{self._company}: {self._detail}"
# __repr__ (representation)μ κ°λ°μ μ
μ₯μμ μ¬μ©νλ μΆλ ₯ λ©μλ
def __repr__(self):
return f"{self._company}: {self._detail}"
- __init__ μ μμ±μ ν¨μλ‘ μΈμ€ν΄μ€ λ©μλ μ¬μ΄μμ μΌλ°μ μΌλ‘ 곡μ κ° κ°λ₯ν λ³μλ€μ μ μ
- __str__, __repr__ μ Pythonμ κΈ°λ³Έμ μΌλ‘ λ΄μ₯λμ΄ μλ(built-in) λ©μ§ λ©μλλ‘ λ λ©μλμ μν μ λΉμ·νμ§λ§ μ£Όμμ 보μ΄λ κ²κ³Ό κ°μ΄ μ¬μ©μ level, κ°λ°μ levelμμ κ°κ° μ¬μ©λλ€κ³ ν¨(μ¬μ©μ level, κ°λ°μ levelμ΄λ λ¨μ΄μ λν΄μ μμ§ μ²΄κ°λμ§ μμ..) λ©μ§ λ©μλμ λν΄μλ λ€μ ν¬μ€ν μμ λ μμΈν λ€λ£Έ.
class Car(object):
# Docstring => Class.__doc__μΌλ‘ ν΄λμ€μ λν μ€λͺ
μ 보 μΆλ ₯ κ°λ₯!
"""
Car Class : μλμ°¨ ν΄λμ€
Author : Jo
Datetime : 2020-12-19
"""
# ν΄λμ€ λ³μ μ μ
car_count = 0
def __init__(self, company, detail):
self._company = company
self._detail = detail
# self.car_count = 100
# ν΄λμ€ λ³μ μ΄μ©νκΈ°
Car.car_count += 1
def __str__(self):
return "{} - {}".format(self._company, self._detail)
def __repr__(self):
return '{} - {}'.format(self._company, self._detail)
# del λ©μλ μμ±ν΄μ ν΄λμ€ λ³μ κ°μμμΌλ³΄κΈ°
def __del__(self):
Car.car_count -= 1
def detail_info(self):
print("Current ID :", id(self))
print("Detail info: ", self._detail.get('price'))
- Doctstring μΌλ‘ λμ΄μλ """ ~ """ μ£Όμ λΆλΆμ μ μν ν΄λμ€μ λν μ€λͺ μ μμ±νλ κ³³. μ κΈ°νκ²λ __doc__ λ§€μ§ λ©μλλ‘ νΈμΆμ΄ κ°λ₯ν¨.
- car_count : ν΄λμ€ μμ΄μ§λ§ μΈμ€ν΄μ€ λ©μλ λ°μμ μ μνλ 'ν΄λμ€ λ³μ'λ‘ ν΄λμ€ μμμ μ μλλ λͺ¨λ μΈμ€ν΄μ€ λ©μλλ€ λͺ¨λ 곡μ κ° κ°λ₯ν¨. μ¦ μΈμν΄μ€ λ©μλ μμμ 'Class_name.class_variable' μμΌλ‘ νΈμΆμ΄ κ°λ₯
- detail_info : κΈ°λ³Έμ μΈ μΈμ€ν΄μ€ λ©μλμ. μ΄λ₯Ό ν΅ν΄ μμ±μ ν¨μμμμ μ μλ λ³μλ₯Ό μ¬μ©νκ±°λ μΈμ€ν΄μ€ λ©μλμ μΆκ° νλΌλ―Έν°λ₯Ό μ§μ΄ λ£μ μ μμ
λ€μμ ν΄λμ€ λ©μλ, μΈμ€ν΄μ€ λ©μλ, Static λ©μλμ λν΄μ μμ보μ.
class Car():
# ν΄λμ€ λ³μ μ μ
price_per_raise = 1.0
def __init__(self, company, detail):
self._company = company
self._detail = detail
def __str__(self):
return f"{self._company} - {self._detail}"
# μΈμ€ν΄μ€ λ©μλ - κ°κ²© μν₯ μ
def detail_info(self):
#print(id(self))
print(f"Company:{self._company} - Price:{self._detail.get('price')}")
return
# μΈμ€ν΄μ€ λ©μλ - κ°κ²© μν₯ ν
def detail_info_after(self):
print(f"Company:{self._company} - Price:{self._detail.get('price') * Car.price_per_raise}")
return
# ν΄λμ€ λ©μλ : ν΄λμ€ λ³μλ₯Ό μ‘°μνκ³ μ΄μ©νκΈ° μν λ©μλ
# cls = Car ν΄λμ€λ₯Ό λνλΈλ€κ³ μκ°νλ©΄ λ¨!
@classmethod
def raise_price(cls, per):
if per <= 1.0:
print("Please enter 1 or more.")
return
cls.price_per_raise = per
return "Success! Price is increased!"
# Static λ©μλ : ν΄λμ€ λ³μλ₯Ό μ΄μ©νμ§ μμ§λ§ μ λμ μΌλ‘ μ¬μ©νκ³ μΆμ λ! Static λ©μλλ cls, selfκ°μ νλΌλ―Έν° λ°μ§ μμ!
# ex. μ΄λ€ μ°¨κ° νλ μ°¨μΈμ§ μμ보기 μν λ©μλ μ μ!
@staticmethod
def is_hyundai(instance):
if instance._company == 'Hyundai':
return "This car is a kind of Hyundai cars."
return "This is not a kind of Hyundai cars."
car1 = Car('Hyundai', {'color': 'white', 'horsepower': 400, 'price': 8000})
car2 = Car('Samsung', {'color':'black','horsepower': 500,'price': 5000})
print("Before")
car1.detail_info()
car2.detail_info()
# κ°κ²© μμΉμν€λ ν΄λμ€ λ©μλ νΈμΆ!
Car.raise_price(1.5)
print("After")
car1.detail_info_after()
car2.detail_info_after()
print('-'*50)
# Static λ©μλ νΈμΆ 2κ°μ§ λ°©λ²
# 1. μΈμ€ν΄μ€λ‘ νΈμΆνκΈ°
print(car1.is_hyundai(car1))
print(car2.is_hyundai(car2))
# 2. ν΄λμ€λ‘ νΈμΆνκΈ°
print(Car.is_hyundai(car1))
print(Car.is_hyundai(car2))
- @classmethod : ν΄λμ€ λ©μλλ₯Ό μλ―Έ. νλΌλ―Έν°μ clsλΌλ κ³ μ νλΌλ―Έν°κ° λ€μ΄κ°κ³ perμ΄λΌλ optionalν νλΌλ―Έν° μΆκ° κ°λ₯. μ£Όλ‘ ν΄λμ€ μμμ μ μλ ν΄λμ€ λ³μλ₯Ό μ΄μ©ν΄μ customizing ν λ μ¬μ©λ¨
- @staticmethod : μ μ λ©μλλ₯Ό μλ―Έ. ν΄λμ€ λ³μλ₯Ό μ΄μ©νλ κ²μ μλμ§λ§ λ§λ€μ΄μ§ μ¬λ¬κ° μΈμ€ν΄μ€λ₯Ό μ΄μ©ν΄μ 무μμΈκ° νκ³ μΆμ λ, μ¦ μ λμ μΌλ‘ λμμ νλλ‘ νκΈ° μν΄ μ£Όλ‘ μ μλ¨.(μμλ μ μ½λμ μ£Όμμ μ΄ν΄λ³΄μ) κ³ μ νλΌλ―Έν°λ μ‘΄μ¬νμ§ μμ§λ§ selfκ° μλ κ·Έλ₯ μΌλ° νλΌλ―Έν°λ₯Ό λ£μ΄μ£Όκ³ νλΌλ―Έν°μ ν΄λμ€λ₯Ό μ μνλ©΄μ λ§λ€μ΄μ€ μΈμ€ν΄μ€ κ°μ²΄λ₯Ό λ£μ΄μ£Όλ κ² μΌλ°μ
λ°μν
'Python > Python' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Python μ€κΈ] Python μνμ€ (0) | 2020.12.24 |
---|---|
[Python μ€κΈ] Magic methodμ named tuple (0) | 2020.12.22 |
[Python] ν¨ν€μ§, λΌμ΄λΈλ¬λ¦¬, λͺ¨λ... λ μ§μ§ μμ? (0) | 2020.01.07 |
[Python] Classμ Object κ°λ κ³Ό μ΄ν΄ (0) | 2020.01.07 |
[Python곡λΆ] 12.19 - 1μΌμ°¨_λͺ°λλ κΈ°λ³Έλ¬Έλ² (0) | 2019.12.19 |