ν΄λμ€
β’
κ°μ²΄
β’
ν΄λμ€
β’
λ©μλ
β’
μμ±μ
β’
μλ©Έμ
β’
μμ μ½λ
κ°μ²΄
μμ±κ³Ό κΈ°λ₯μ κ°μ§λ λμ
ν΄λμ€
κ°μ²΄λ₯Ό μ μνλ μ€κ³λ
ν΄λμ€ μ μΈ
class ν΄λμ€λͺ
:
ν΄λμ€ λ³μ = κ°
ν΄λμ€ λ΄μ© (μμ±μ, μλ©Έμ, λ©μλ, ...)
Python
볡μ¬
λ©μλ
ν΄λμ€ λ΄λΆμμ μ μν ν¨μ
def λ©μλλͺ
(self, 맀κ°λ³μ1, 맀κ°λ³μ2, ...):
μ€νλ¬Έ
Python
볡μ¬
μμ±μ
κ°μ²΄κ° μμ±λ λ μ€νλλ λ©μλ
def __init__(self, 맀κ°λ³μ1, 맀κ°λ³μ2, ...):
self.μΈμ€ν΄μ€λ³μ1 = 맀κ°λ³μ1
self.μΈμ€ν΄μ€λ³μ2 = 맀κ°λ³μ2
Python
볡μ¬
self
κ°μ²΄ μκΈ° μμ μ κ°λ¦¬ν€λ ν€μλ
super()
μμ ν΄λμ€μμ λΆλͺ¨ ν΄λμ€μ μμ±μλ₯Ό νΈμΆνλ λ©μλ
κ°μ²΄ μμ±
λ³μλͺ
= κ°μ²΄μ΄λ¦( μΈμ1, μΈμ2, ... )
Python
볡μ¬
μλ©Έμ
κ°μ²΄κ° μλ©Έ(λ©λͺ¨λ¦¬μμ ν΄μ )λ λ μ€νλλ λ©μλ
def __del__(self):
μ€νλ¬Έ
Python
볡μ¬
μμ μ½λ
ν΄λμ€ μ μΈ
class ν΄λμ€λͺ
:
ν΄λμ€ λ΄μ©
# μμ±μ
# : κ°μ²΄κ° μμ±λ λ, μ€νλλ λ©μλ
def __init__(self, 맀κ°λ³μ):
μμ±μ λ΄μ©
# self : κ°μ²΄ μμ μ κ°λ¦¬ν€λ ν€μλ(λμ
λ리)
# self.(λ³μ), self.(λ©μλ)
# μλ©Έμ
# : κ°μ²΄κ° μλ©Έλ λ, μ€νλλ λ©μλ
def __del__(self):
μλ©Έμ λ΄μ©
# λ©μλ
# : ν΄λμ€κ° μ μλ ν¨μ
def λ©μλλͺ
(self, 맀κ°λ³μ):
λ©μλ λ΄μ©
Python
볡μ¬
κ°μ²΄ μμ±
κ°μ²΄ λ³μλͺ
= ν΄λμ€λͺ
( )
Python
볡μ¬
β’
ν΄λμ€λͺ
( ) --> μμ±μ ν¨μ
β’
μΈμ€ν΄μ€ : ν΄λμ€λ₯Ό ν΅νμ¬ μμ±λ κ°μ²΄
Person.py
# Person ν΄λμ€ μ μΈ
class Person:
# name = 'μ΄λ¦μμ'
# age = 0
# tel = '010-0000-0000'
# μμ±μ
# νμ΄μ¬μμλ μμ±μλ μ¬λ¬ κ° μ μν μ μλ€.(μ€λ²λ‘λ©X)
# def __init__(self):
# print('Person κ°μ²΄ μμ±...')
# μμ±μ
# - μ μν μμ±μμ 맀κ°λ³μμ λν΄νΈλ§€κ°λ³μλ₯Ό μ€μ νμ¬ μ€λ²λ‘λ©μ²λΌ ꡬννλ€
def __init__(self=None, name=None, age=None, tel=None):
self.name = name
self.age = age
self.tel = tel
print('Person κ°μ²΄ μμ±...')
# μλ©Έμ
def __del__(self):
print('Person κ°μ²΄ μλ©Έ...')
# λ©μλ
def show_info(self):
print('μ΄λ¦ : {}, λμ΄ : {}, μ νλ²νΈ : {}'.format(self.name, self.age, self.tel))
# Person κ°μ²΄ μμ±
person = Person()
# κ°μ²΄μ λ³μ μ κ·Ό
person.name = 'λ§λμ'
person.age = 20
person.tel = '010-1234-1234'
print('μ΄λ¦ :', person.name)
print('λμ΄ :', person.age)
print('μ νλ²νΈ :', person.tel)
person2 = Person('μμꡬ', 20, '010-1111-2222')
print( person2.name )
print( person2.age )
print( person2.tel )
person3 = Person('μ‘°μΉμ°', 30, '010-0000-0000')
person3.show_info()
Python
볡μ¬
νμ΄μ¬μμ ν΄λμ€λ₯Ό μ μν λ νμΌ μ΄λ¦μ 첫 κΈμλ₯Ό λλ¬Έμλ‘ νλ κ²μ΄ μΌλ°μ μΈ κ΄λ‘μ
λλ€.
Student.py
class Student:
def __init__(self, no, name, major):
self.no = no
self.name = name
self.major = major
# νΉμν μ΄λ¦μ λ©μλ
# __(μ΄λ¦)__ ννμ νΉμν μ΄λ¦μ λ©μλλ€μ΄ μλ€.
# : 미리 μ μλ μ΄λ¦μ΄λ©°, νΉμν μν©ν΄μ νΈμΆλλλ‘ μ μλμ΄μλ€.
# __str__ : str(κ°μ²΄) ν¨μλ₯Ό νΈμΆν λ, μλμΌλ‘ μ€νλλ λ©μλ
def __str__(self):
return '{} / {} / {}'.format(self.no, self.name, self.major)
# __eq__, __ne__ λ±μ λ©μλλ₯Ό μ μνμ§ μμΌλ©΄,
# ==, != μ체λ μΈμ€ν΄μ€λ₯Ό λΉκ΅ν©λλ€.
# κ°μ²΄μ μ λ³΄κ° κ°μμ§ νμΈνλ λ©μλ
def __eq__(self, obj):
return self.no == obj.no
# κ°μ²΄μ μ λ³΄κ° λ€λ₯Έμ§ νμΈνλ λ©μλ
def __ne__(self, obj):
return self.no != obj.no
# κ°μ²΄ 리μ€νΈ
students = [
Student(101, 'νμ±νΈ', 'μ»΄ν¨ν°κ³΅νκ³Ό'),
Student(102, 'μ΄ν¨λ¦¬', 'λ°©μ‘μ°μκ³Ό'),
Student(103, 'μμꡬ', 'μ°κ·Ήμνκ³Ό'),
Student(101, 'νμ±νΈ', 'μ»΄ν¨ν°κ³΅νκ³Ό'),
]
for student in students:
# str(κ°μ²΄) : ν΄λΉ κ°μ²΄μ __str__ λ©μλλ₯Ό νΈμΆνλ λ©μλ
print( str(student) )
# == κΈ°νΈλ₯Ό μ΄μ©νμ¬ λ κ°μ²΄λ₯Ό λΉκ΅νλ©΄,
# ν΄λΉ κ°μ²΄μ __eq__ λ©μλκ° νΈμΆλλ€.
print( students[0] == students[1] )
print( students[0] == students[3] )
# != κΈ°νΈλ₯Ό μ΄μ©νμ¬ λ κ°μ²΄λ₯Ό λΉκ΅νλ©΄,
# ν΄λΉ κ°μ²΄μ __ne__ λ©μλκ° νΈμΆλλ€.
print( students[0] != students[1] )
print( students[0] != students[3] )
s1 = Student(101, 'ALOHA', 'μ»΄ν¨ν°κ³΅νκ³Ό')
s2 = Student(101, 'ALOHA', 'μ»΄ν¨ν°κ³΅νκ³Ό')
print( s1 == s2 )
Python
볡μ¬
ν΄λμ€ λ©μλ
λ°μ½λ μ΄ν°
@μ΄λ¦ : λ°μ½λ μ΄ν°, ν΄λΉ ν΄λμ€λ λ©μλμ κΈ°λ₯/μ©λλ₯Ό λͺ
μ
ν΄λμ€ λ©μλ
@classmethod : ν΄λΉ λ©μλλ₯Ό ν΄λμ€ λ©μλλ‘ λͺ
μ
β’
ν΄λμ€ λ©μλμ 첫λ²μ§Έ 맀κ°λ³μλ‘ ν΄λμ€(cls)λ₯Ό λ°μμ¨λ€.
β’
μΈμ€ν΄μ€ λ©μλμ 첫λ²μ§Έ 맀κ°λ³μλ μΈμ€ν΄μ€(self)λ₯Ό λ°μμ¨λ€.
class ν΄λμ€λͺ
:
# ν΄λμ€ λ³μ
ν΄λμ€λ³μλͺ
= κ°
# ν΄λμ€ λ©μλ
@classmethod
def λ©μλλͺ
(cls):
λ©μλ λ΄μ©
# cls : ν΄λμ€
ν΄λμ€ λ³μμ μ κ·Ό
- ν΄λμ€λͺ
.λ³μλͺ
Python
볡μ¬
Student.py
class Student:
# name = '' # κΈ°λ³Έκ° μ΄κΈ°ν
#age = 0
#tel = ''
# ν΄λμ€ λ³μ - κ°μ²΄κ°μ 곡μ ν κ°μ μ¬μ©νλ λ³μ
count = 0
student_list = []
def __init__(self, name, age, tel):
# μΈμ€ν΄μ€ λ³μ - κ°μ²΄ λ³λ‘ λ€λ₯΄κ² μ¬μ©ν λ³μ
self.name = name
self.age = age
self.tel = tel
Student.count += 1
Student.student_list.append(self)
def __str__(self):
return '{} / {} / {}'.format(self.name, self.age, self.tel)
# ν΄λμ€ λ©μλ
# @μ΄λ¦ : λ°μ½λ μ΄ν°, ν΄λΉ ν΄λμ€λ λ©μλμ κΈ°λ₯/μ©λλ₯Ό λͺ
μνλ μν
# @classmethod : ν΄λΉ λ©μλλ₯Ό ν΄λμ€ λ©μλλ‘ λͺ
μ
# ν΄λμ€ λ©μλμ 첫λ²μ§Έ 맀κ°λ³μλ‘ ν΄λμ€(cls)λ₯Ό λ°μμ¨λ€.
# μΈμ€ν΄μ€ λ©μλμ 첫λ²μ§Έ 맀κ°λ³μλ μΈμ€ν΄μ€(self)λ₯Ό λ°μμ¨λ€.
@classmethod
def show_info(cls):
for student in cls.student_list:
print( str(student) )
s1 = Student('κΉν΄λ¨Ό', 20, '010-1111-2222')
s2 = Student('μ΄ν¨λ¦¬', 30, '010-1111-2222')
s3 = Student('μμꡬ', 40, '010-1111-2222')
print('{} λͺ
μ νμμ΄ μ°Έμ¬νμμ΅λλ€'.format( Student.count ))
print( Student.show_info() )
Python
볡μ¬
getter & setter
β’
getter
λ³μμ κ°λ₯Ό κ°μ Έμ€λ λ©μλ
β’
setter
λ³μμ κ°μ μ§μ νλ λ©μλ
β’
κΈ°λ³Έ getter, setter
# getter, setter
# - getter : λ³μμ κ°λ₯Ό κ°μ Έμ€λ λ©μλ
# - setter : λ³μμ κ°μ μ§μ νλ λ©μλ
class Person:
# getter
def get_name(self):
return self.name
# setter
def set_name(self, value):
self.name = value
p = Person()
p.set_name('ALOHA')
print('p - name : {}'.format( p.get_name() ))
Python
볡μ¬
β’
λ°μ½λ μ΄ν°λ₯Ό μ΄μ©ν getter, setter μ μ
# λ°μ½λ μ΄ν°λ₯Ό μ΄μ©ν getter, setter μ μ
class Person:
# @property : ν΄λΉ λ³μλ₯Ό λ°μ½λ μ΄ν° κΈ°λ₯μ μ¬μ©ν μ μλλ‘ μ§μ
# - νλμ μν μ κΈ°λ₯μΈ setter, getter λ‘ μ¬μ©κ°λ₯
# - @property λ‘ μ§μ ν λ³μλ __λ³μ μκ°μ ννλ‘ μ¬μ©
@property
def name(self):
return self.__name
# @λ³μ.setter : ν΄λΉ λ©μλλ₯Ό setter λ©μλλ‘ μ§μ
# - (κ°μ²΄.λ³μ = κ°) λ¬Έμ₯μ€ν μ,--> μ§μ ν setter λ©μλκ° μ€ν
@name.setter
def name(self, value):
self.__name = value
print('setter λ©μλ νΈμΆ...')
# @λ³μ.getter : ν΄λΉ λ©μλλ₯Ό getter λ©μλλ‘ μ§μ
# - (κ°μ²΄.λ³μ) λ¬Έμ₯μ€ν μ,--> μ§μ ν getter λ©μλκ° μ€ν
@name.getter
def name(self):
print('getter λ©μλ νΈμΆ...')
return self.__name
p = Person()
p.name = 'ALOHA'
print('p - name : {}'.format( p.name ))
Python
볡μ¬
Circle.py
import math
class Circle:
@property
def radius(self):
return self.__radius
@radius.setter
def radius(self, value):
if value <= 0 :
print('λ°μ§λ¦μ μμμ΄μ΄μΌν©λλ€.')
self.__radius = 0
return
self.__radius = value
@radius.getter
def radius(self):
return self.__radius
circle = Circle()
circle.radius = -10
print('circle - radius : {}'.format( circle.radius ))
Python
볡μ¬