IT/Python

5. Python 클래스

상짱 2020. 2. 4. 17:49
반응형

1. 클래스

- class

- 클래스 내부에 정의된 함수인 메서드의 첫번째 인자는 반드시 self 이어야 한다. ( 그냥 외울 것 )

# class 선언
class Test :
    def set_test(self, name, msg) :
        self.name = name
        self.msg = msg
    def print_test(self) :
        print("------------------------")
        print("name : ", self.name)
        print("msg : ", self.msg)
        print("------------------------")

# 인스턴스 생성
test01 = Test()
test01
type(test01)

test01.set_test("홍길동", "안녕하세요")

test01.name
test01.msg

test01.print_test()

 

- 생성자

- 인스턴스 생성과 동시에 자동으로 호출되는 메서드인 생성자가 존재( 객체지향 프로그래밍 언어에도 있는 개념 )

- __init__(self)와 같은 이름의 메서드

- 파이썬 클래스에서 __ 로 시작하는 함수는 모두 특별한 메서드를 의미

# init - initialize 초기화하다
class MyTest :
    def __init__(self) :
        print( "객체가 생성되었습니다" )
        
myTest = MyTest()
# init - initialize 초기화하다
class MyTest :
    def __init__(self, name, msg) :
        self.name = name
        self.msg = msg
    def print_test(self) :
        print("------------------------")
        print("name : ", self.name)
        print("msg : ", self.msg)
        print("------------------------")
        
myTest = MyTest("방실이", "안녕하세요")
myTest.print_test()

 

- self

- 클래스 인스턴스

class Foo :
  def function01(self) :
    print("function01" , id(self))
  def function02() :
    print("function02")
    
foo = Foo()
foo.function01()
# self 인자는 파이썬이 자동으로 넘겨준다.

foo.function02()
# TypeError: function02() takes 0 positional arguments but 1 was given

id(foo)
# foo.function01() 의 id(self) 와 동일하다.

Foo.function01()
# TypeError: function01() missing 1 required positional argument: 'self'

foo1 = Foo()
Foo.function01(foo1)
# function01 2861741202248

id(foo1)
# 2861741202248

 

- 클래스 네임스페이스

- 변수가 객체를 바인딩할 때 그 둘 사이의 관계를 저장하고 있는 공간

class Test :
  name = "홍길동"
    
# 네임스페이스 확인
dir()

# Test 클래스 네임스페이스
Test.__dict__

# 별도의 인스턴스 생성
t01 = Test()
t02 = Test()

t01.name = "방실이"

Test.name
t01.name
t02.name

 

- 클래스 변수와 인스턴스 변수

class Vari :
  # 클래스 변수
  num = 0 
  def __init__(self, name) :
    # 인스턴스 변수
    self.name = name 
    Vari.num += 1
  def __del__(self) :
    Vari.num -= 1

# 두개의 개별 인스턴스
kim = Vari("kim")
park = Vari("Park")

kim.name
park.name

# 두개의 개별 인스턴지만, num 클래스 변수이다.
kim.num
park.num

 

- 클래스 상속

class Parent :
  def hello(self) :
    print("parent hello")

par = Parent()
par.hello()

class Child(Parent) :
  def msg(self) :
    print("child msg~~~")

child1 = Child()
child1.hello()
child1.msg()

 

반응형

'IT > Python' 카테고리의 다른 글

Python PyQt5 QAxContainer import 에러  (0) 2020.05.18
Python / GUI  (0) 2020.05.14
Python / COM  (0) 2020.05.13
7. Python IDE  (0) 2020.02.07
6. Python 파일읽기 / 쓰기  (0) 2020.02.05
4. Python 함수와 모듈  (0) 2020.02.04
3. Python 제어문  (0) 2020.01.29
2. Python 기본자료구조(리스트/튜플/딕셔너리)  (0) 2020.01.20
1. Python 변수/문자열/기본데이터타입  (0) 2020.01.20
Python 시작  (0) 2020.01.14