본문 바로가기
Software/Python

[파이썬의 기본] 클래스(Class)

by lovey25 2019. 5. 22.
반응형

클래스는 객체지향 언어의 대표적 특징이라고들 많이 얘기하는데요. 당연히 파이썬에서도 클래스를 원하는 객체지향프로그램 언어입니다.

class

c++과 마찬가지로 파이썬에서도 class란 키워드를 사용해서 클래스를 정의하고 클래스 내부에는 매소드라고 부르는 함수로 구성됩니다.

클래스의 형태는 다음과 같습니다.

예제:

class chair:
    def __init__(self, color, legs):
        self.color = color
        self.legs = legs

table = chair("red", 4)
desk = chair("white", 4)

print(table.color)

결과:

이 예제는“chair”라는 이름의 클래스가 “color”, “legs”라는 두개 속성을 가지고 있는것으로 정의되었고, “table”, “desk”라는 이름으로 그 클래스에 대한 객체가 생성되는 것을 나타내고 있습니다. 그래서 마지막에는 “table”이라는 객체의 “color” 속성을 출력하고 있죠.

__init__

__init__ 메서드는 클래스 객체가 생성되면 자동으로 호출되는 메서드입니다. 잘은 모르지만 c++의 생성자와 비슷한 개념인것 같습니다.

위 예제에서 두개의 파라미터는 각각 객체의 속성에 대입되었습니다. 그리고 객체의 속성은 객체 이름뒤에 점연산자를 사용해서 접근하고 있습니다.

모든 메서드는 표현하지 않더라도 "self"라는 파라미터를 첫 번째 파라미터로 전달합니다. 그래서 클래스 정의시에는 “self” 키워드를 항상 첫번째 파라미터로 사용하게 됩니다. 그러나 호출시에는 파이썬에서 자동으로 추가해 주기 때문에 self 파라미터를 적어 줄 필요는 없습니다. 

메서드 정의에서 “self”는 메서드를 호출하는 객체 자체를 가르킵니다.

Methods

클래스에는 사용자가 원하는대로 메서드를 추가할 수 있습니다. 

예제:

class Phone:
    def __init__(self, number, color):
        self.number = number
        self.color = color
    def ring(self):
        print("ring-ring!")

myphone = Phone("010", "silver")
print(myphone.number)
myphone.ring()

결과:

클래스는 클래스 내부에서 변수에 할당해서 생성되는 클래스의 속성을 가질수도 있습니다. 클래스 속성은 클래스의 인스턴스나 자제적으로도 접근이 가능합니다. 써놓고도 뭔말인지 ㅋ 아래 예제 봐주세요.

예제:

class Phone:
    communicationSTD = "5G"
    def __init__(self, number, color):
        self.number = number
        self.color = color

myphone = Phone("010", "silver")

print(myphone.communicationSTD)
print(Phone.communicationSTD)

결과:

한마디로 클래스 자체를 변수에 집어넣을 수도 있고, 그 변수가 클래스 그 자체인것처럼 동작할 수 있다는거죠.

이상 클래스에 대한 기본개념이었습니다.

 

!

반응형

댓글