클래스는 객체지향 언어의 대표적 특징이라고들 많이 얘기하는데요. 당연히 파이썬에서도 클래스를 원하는 객체지향프로그램 언어입니다.
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)
결과:
한마디로 클래스 자체를 변수에 집어넣을 수도 있고, 그 변수가 클래스 그 자체인것처럼 동작할 수 있다는거죠.
이상 클래스에 대한 기본개념이었습니다.
끝!
'Software > Python' 카테고리의 다른 글
[파이썬의 기본] 파일에서 읽고 쓰기 (2) | 2019.05.24 |
---|---|
[파이썬의 기본] 클래스의 상속 (2) | 2019.05.24 |
[PyQt 파이썬 GUI프로그래밍] Layout으로 창크기에 따라 창요소 크기도 같이 조절되도록 하기 (15) | 2019.05.21 |
[파이썬의 기본] 예외처리 (try, except, finally, raise) (2) | 2019.04.24 |
댓글