• 회원가입
  • 로그인
  • 구글아이디로 로그인

[basic] Python - Class/Object (클래스/객체) ※ __init__() 함수

1329  

목차

  1. Class (클래스) / Object (객체)
  2. Class 생성
  3. Object 생성
  4. __init__() 함수
  5. Object 메서드
  6. self 매개변수
  7. Object 속성 수정
  8. Object 속성 삭제
  9. Object 삭제 (= del 키워드)
  10. 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:

 



분류 제목
basic Python - Lambda (람다함수) - 작은 1회용 익명함수
basic Python - Array (배열)
basic Python - Class/Object (클래스/객체) ※ __init__() 함수
basic Python - Inheritance (상속)
basic Python - Iterator (반복자)
basic Python - Scope (범위)
basic Python - Module (모듈)
basic Python - Datetime (날짜시간) 표시
basic Python - JSON (제이슨)
basic Python - RegEx (정규식) - 정규표현식
basic Python - PIP (피프) - 패키지(모듈) 관리자
basic Python - Try...Except - 에러 테스트/제어. (= 트라이...익세프트)
basic Python - User Input (사용자 입력)
basic Python - String Format (문자열 포맷)
basic Python - Math (수학)
2/2
목록
찾아주셔서 감사합니다. Since 2012