Search

클래슀

클래슀

β€’
객체
β€’
클래슀
β€’
λ©”μ†Œλ“œ
β€’
μƒμ„±μž
β€’
μ†Œλ©Έμž
β€’
μ˜ˆμ‹œ μ½”λ“œ

객체

속성과 κΈ°λŠ₯을 κ°€μ§€λŠ” λŒ€μƒ

클래슀

객체λ₯Ό μ •μ˜ν•˜λŠ” 섀계도

클래슀 μ„ μ–Έ

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
볡사