python

class - 개요

bono.html 2022. 10. 7. 10:42

class

새로운 타입을 생성, 객체 지향적(중심적)인 프로그래밍

 

 

클래스의 특징

클래스는 데이터와 기능을 묶어준다. 코드에 전역변수와 함수를 줄이는 등 여러 이점이 있다.

생성자, 소멸자가 있다.

다중상속이 가능하다. interface가 없다.

파이썬에는 접근지정자가 없다. (private 변수는 __로 작성하여 분류한다)

함수가 클래스 바깥쪽에 정의되어 있다면 function, 안쪽에 정의되어 있다면 method라고 한다.

 

 

클래스의 기본적인 형태

파이썬 메서드의 첫 번째 매개변수 이름은 관례적으로 self를 사용한다. 

생성자, 소멸자가 있다.

class TestClass:     #prototype, 원형클래스 객체 생성, 고유의 이름 공간을 확보
    aa = 1 # 멤버변수(멤버필드), public
    
    def __init__(self): # 생성자
        print('생성자')
        
    def __del__(self):
        print('소멸자')
        
    def printMessage(self):  # method
        name = '한국인' # 지역변수
        print(name)
        print(self.aa)
        
print(TestClass, id(TestClass))
print(TestClass.aa)   # 멤버필드 호출

<class '__main__.TestClass'> 2555426767856
1

 

 

위에서 만들어 둔 TestClass type의 객체 생성

test = TestClass()  # 생성자 호출한 후 TestClass type의 객체 생성
print(test.aa)  # 멤버필드 호출

생성자
1

 

 

메소드 호출 방식 2가지

결과 값은 같다

 

- Bound method call

괄호 안에 자동으로 test가 들어가는 것과 마찬가지이다.

test.printMessage()

- UnBound method call

TestClass.printMessage(test)

 

 

생성한 객체의 type 확인, 모든 class활용이 끝나면 소멸자가 작동한다.

다만 소멸자는 활용도가 낮고 중요하지 않다.

print(type(1))
print(type(1.1))
print(type(test))
print(id(test), id(TestClass))

<class 'int'>
<class 'float'>
<class '__main__.TestClass'>
2775562120160 2775562664192
소멸자