728x90
반응형

파이썬에서도 클래스를 만들어 사용을 할 수 있습니다.  클래스를 어떻게 만들고 어떻게 사용을 하는 지 알아보겠습니다.

 

클래스

클래스는 무엇인가를 계속해서 만들어 낼 수 있는 설계 도면이고 객체란 클래스로 만들어진 피조물 입니다.

 

클래스 구조 만들기

클래스를 만들때는 class라는 예약어를 사용하여 만듭니다. 

class test:
    pass

a = test()
print(type(a))

위 코드는 test 라는 클래스 빈 클래스로 만들어 a는 test의 인스턴스 입니다. type(a)로 확인한 결과는 "<class '__main__.test'>" 와 같이 나타날 것 입니다.

 

클래스 함수 만들기

클래스에서 함수를 만드는 방식은 일반적인 함수를 만드는 방법과 유사하지만 매개변수 자리에 self가 첫번째로 들어가야합니다. 여기서 self는 객체자신이 됩니다. 함수를 호출할때는 "객체.함수(매개변수)" 이렇게 호출하고, 이때 객체가 바로 self가 됩니다. 아래의 예제 코드를 살펴봅시다.

class test:
    def set(self, a, b):
        self.a = a
        self.b = b

c = test()
c.set(1,2)
print(c.a, c.b)

d = test()
d.set(4,5)
print(d.a, d.b)

e = test()
test.set(e, 6,7)
print(e.a, e.b)

c,d 객체에서 set 함수를 호출하는 방식과 e객체에서 set 함수를 호출하는 방식의 차이를 확인하여 주십시오.

생성자

클래스 생성자에 대해서 알아보겠습니다. 파이썬에서 생성자는 __init__ 를 사용하여 함수를 만들면 됩니다.

class test:
    def __init__(self, a, b):
        self.a = a
        self.b = b
    def set(self, a, b):
        self.a = a
        self.b = b

c = test(1,2)
print(c.a, c.b)

set 함수를 호출하지 않고 객체를 만들면서 a, b에 값을 전달하여 객체가 생성이되는 것을 확인 할수 있습니다.

 

클래스의 상속

상속이라는 것은 "물려받다" 입니다. 이것은 어떤 클래스를 만들 때 다른 클래스의 기능을 물려받을 수 있게 만드는 것입니다.

class test:
    def __init__(self, a, b):
        self.a = a
        self.b = b
    def add(self):
        return self.a + self.b

# test를 상속한다.
class test2(test):
    def mul(self):
        return self.a * self.b

# test2를 이용하여 객체를 만듬
c = test2(1,2)
print(c.add()) # test 의 add를 호출
print(c.mul()) # test2 의 mul를 호출

상속은 왜 필요할까요? 상속은 기존 클래스를 변경하지 않고 기능을 추가하거나 기존 기능을 변경하려고 할 때 사용합니다.

 

메서드 오버라이딩

자식 클래스에 부모 클래스의 함수와 동일한 이름으로 메서드를 다시작성하는 것을 의미합니다.


class test:
    def __init__(self, a, b):
        self.a = a
        self.b = b
    def add(self):
        return self.a + self.b

# test를 상속한다.
class test2(test):
    def mul(self):
        return self.a * self.b
    def add(self):
        if self.a == 1:
            return 0
        else:
            return self.a + self.b

# test2를 이용하여 객체를 만듬
c = test2(1,2)
print(c.add()) # test2 의 add 호출(오버라이딩)
print(c.mul()) # test2 함수의 mul를 호출

### 결과
0
2

 

클래스 변수

클래스에서 선언한 변수를 클래스 변수라고 합니다. 클래스 변수는 "클래스이름.클래스변수"로 사용할 수 있습니다.

클래스 변수의 특징은 클래스로 만든 모든 객체에 공유된다는 특징이 있습니다.

class test:
    name = "티파일러" # 클래스변수


c = test()
d = test()
print("c:",c.name, id(c.name))
print("d:",d.name, id(d.name))

# 클래스 변수 변경
test.name = "파이썬"

print("c:",c.name, id(c.name))
print("d:",d.name, id(d.name))

### 결과
c: 티파일러 2417809593808
d: 티파일러 2417809593808
c: 파이썬 2417809593712
d: 파이썬 2417809593712
728x90
반응형

+ Recent posts