[A Byte of Python]
12장 객체
[A Byte of Python] 11장 실생활 문제 해결
클래스
class class_name:
pass
와 같은 형식으로 사용된며 사용할 때는 value = class_name()
이렇게 사용한다.
메소드
클래스에 속해있는 함수를 의미하는데
class class_name:
def method1(self):
pass
def method2(self):
pass
이렇게 정의되며 사용될 때는 class_name.method1()
이나 할당 시킨 value에 value.method2()
와 같은 방법으로 사용할 수 있다. (Self에 해대선 아래쪽에서 상세히 다룬다.)
init 메소드
클래스를 처음 생성할 때 초기화 시키는 메소드 이다.
class class_name:
def __init__(self, name):
self.name = name
위와 같이 정의하며, 사용할 때는 value = class_name("name string")
와 같이 사용한다.
클래스 변수와 객체 변수
클래스 변수 > 클래스 내부에서 자유롭게 사용가능한 함수며 클래스와 함께한다.(사라지지 않는다.)
객체 변수 > 메소드 내부에서 사용되는 변수로 메소드 밖으로 나가게 되면 사라지게 된다.
Self에 대하여
클래스 메소드는 일번적인 함수와 딱 한가지 다른 점이 바로 이 self이다.
메소드의 경우 매개 변수의 목록 맨 앞에 추가해야 한다.
해당 self는 파이썬이 자동으로 판별해 넣어줘 메소드를 사용하면서 우리가 따로 입력 할 필요는 없다.
self가 있는 메소드와 없는 메소드의 차이 ++추가설명
class self_test: def test1(self, str): print(str) def test2(str): print(str) t = self_test() t.test1("test string") t.test2("test string")
위와 같은 코드가 있을때,
8번째 줄의 test1
메소드는 정상적으로 작동하지만,
9번째 줄의 test2
메소드는 작동하지 않고 오류를 출력한다.
즉 class에서 self 매개 변수는 value.method(arg)
와같은 형식으로 접근이 가능하게 하는 것이다.
이를 통해 self가 의미하는 바를 알 수 있는데 바로 value로 “자기 자신(self)”을 가르킨다는 것을 알 수 있다.
상속
객체 지향 프로그래밍에 있어서 상속을 빼먹을 수 없다.
부모 클래스로 부터 코드를 받아 재사용이 가능하다.
class child_class(parent_class):
위와 같이 상속 받을 수 있으며 부모 클래스의 코드를 재사용할 수 있다.