목차
Class (클래스) / Object (객체)
Class 생성
Object 생성
__init__() 함수
Object 메서드
self 매개변수
Object 속성 수정
Object 속성 삭제
Object 삭제 (= del 키워드)
pass 구문
Class (클래스) / Object (객체)
1.
Python은 객체 지향 언어.
2.
Python의 대부분은 Object (객체)임.
※ 개별 속성/메서드 보유.
3.
Class (클래스)는 Object (객체) 생성하는 기본 설계도와 비슷.
Class 생성
class 키워드 사용해 클래스 생성.
※ 클래스명의 첫 글자는 대문자 권장.
[구문]
class 클래스명:
클래스내용
[예제] Hz라는 클래스 정의.
class Hz:
x = 3
print(Hz)
결과값: <class '__main__.Hz'>
Object 생성
클래스로 객체 생성.
[예제] Hz 클래스로 obj 객체 생성.
class Hz:
x = 3
obj = Hz()
print(obj)
결과값: <__main__.Hz object at 0x000001A57365FF40>
__init__() 함수
위 예제는 가장 단순한 클래스라 거의 사용 안 함.
※ 클래스 이해하려면, __init__() 함수 이해 필요.
★ __init__() 함수
1. 모든 클래스에 기본 내장.
2. 클래스 시작 시 항상 실행. (즉, 객체 생성 때마다 자동 호출됨 .)
3. 용도: ① 객체 속성에 값 할당. ② 객체 생성 시 수행할 작업 정의.
[예제]
class Mb:
def __init__(self, name, level):
self.name = name
self.level = level
m1 = Mb("sinbi", 10)
print(m1.name) # sinbi
print(m1.level) # 10
Object 메서드
객체는 메서드도 포함 가능.
※ 메서드 : 객체 소속 함수.
[예제]
class Mb:
def __init__(self, name, level):
self.name = name
self.level = level
def hello(self):
print(self.name + " 님, 반가워요.")
m1 = Mb("sinbi", 10)
m1.hello() # sinbi 님, 반가워요.
self 매개변수
1.
클래스의 현재 인스턴스에 대한 참조.
※ 인스턴스 : 클래스로 현재 생성한 객체.
2.
클래스에 속하는 변수 접근에 사용됨.
3.
self 대신 다른 명칭 사용 가능.
※ 심지어, 함수끼리 달라도 됨.
단, 클래스 안 모든 함수의 첫 번째 매개변수여야 함.
[예제] self 대신 man, guy 사용.
class Mb:
def __init__(man , name, level):
man .name = name
man .level = level
def hello(guy ):
print(guy .name + " 님, 반가워요.")
m1 = Mb("sinbi", 10)
m1.hello() # sinbi 님, 반가워요.
Object 속성 수정
※ 객체의 속성을 재정의 하는 형태로 수정 가능.
class Mb:
def __init__(self, name, level):
self.name = name
self.level = level
def hello(self):
print(self.name + " 님, 반가워요.")
m1 = Mb("sinbi", 10)
m1.level = 20
print(m1.level) # 20
Object 속성 삭제
※ del 키워드 사용해 객체의 속성 삭제.
class Mb:
def __init__(self, name, level):
self.name = name
self.level = level
def hello(self):
print(self.name + " 님, 반가워요.")
m1 = Mb("sinbi", 10)
del m1.level
print(m1.level) # 에러 발생. 결과값: AttributeError: 'Mb' object has no attribute 'level'
Object 삭제 (= del 키워드)
※ del 키워드로 객체 삭제.
class Mb:
def __init__(self, name, level):
self.name = name
self.level = level
def hello(self):
print(self.name + " 님, 반가워요.")
m1 = Mb("sinbi", 10)
del m1
print(m1) # 에러 발생
결과값: NameError: name 'm1' is not defined
pass 구문
Class는 정의 내용이 없으면 에러 발생하는데,
정의 부분에 pass 키워드 넣어두면 에러 안 남.
[예제1] 에러 발생 X
class Mb:
pass
[예제2] 에러 발생 O
class Mb:
주소 복사
랜덤 이동
최신댓글