코드에서 개체의 속성과 메서드를 정의하는데 사용되는 템플릿이다. 주로 붕어빵에 비유하여, 붕어빵을 객체로 비유하고 붕어빵틀은 클래스라고 비유한다.
사용방법
class 키워드를 사용하여 선언한다.
그렇지만, 아래와 같이 class만 선언할 경우 작동하지 않는다. 클래스를 정의하는 body 부분이 비워져 있으면 안된다.
class example:
pass를 기입할 경우, 유효할 수 있다.
class example:
pass
클래스 body에 self 키워드를 통해 메서드를 호출하고 변수에 access 할 수 있다. 객체에서 불러올 수 있는 메서드 중 더블언더스코어가 양쪽에 붙어있는 메서드를 dunder method(혹은 magic mathod, sepcial method 라고도 부르기도 함) 라고 한다. Dunder method는 파이썬에서 클래스 하에 특정 작업을 수행한다.
**(참고)Dunder method의 기능**
- numeric type attribute에 대해 산술 연산을 수행
- 새 클래스 instance를 초기화하고, 필요한 속성을 바인딩한다
- 해당 클래스에 고유한 동작을 만들기 위해, 특정 메서드를 오버로드한다.
class ClassName:
__methodname__(self, param1, param2, ... paramN):
# Method body here
첫 번째 매개변수 self는 메소드가 호출될 클래스 인스턴스를 참조하기 때문에 인수로 명시적으로 전달되지 않는다. 그러나 나머지 정의된 매개변수(param1, param2, ... paramN)는 메서드가 호출될 때 인수로 전달되어야만 한다. 코드아카데미에 설명되어 있는 예제가 이해하기 쉬울 것 같아 그대로 가져왔다.
사용 예제
Home이라는 클래스를 정의할 때, __init__이라는 dunder method를 통해 self, rooms 라는 인수를 설정한다. Home이라는 클래스를 이용해 새로운 인스턴스가 생성될 때마다 rooms라는 인자가 전달되도록 설정되었다.
class Home:
def __init__(self, rooms):
self.rooms = rooms
myHome = Home(4)
파라미터를 하나 더 추가하여 아래와 같이 설정해볼 수 있다.
class Home:
def __init__(self, rooms, stories):
# Setting instance variables
self.rooms = rooms
self.stories = stories
혹은 아래와 같은 방법으로 설정해볼 수도 있다.
class Home:
def __init__(self, *args):
self.rooms = args[0]
self.stories = args[1]
def introduce(self):
print('rooms : %s' %self.rooms)
print('stories : %s' %self.stories)
a = Home(*['3', '2'])
a.introduce()
#Output
#rooms : 3
#stories : 2
객체(Object)는 클래스에서 만들거나 인스턴스화할 수 있다. 이러한 개체를 클래스 인스턴스라고 하며, 클래스 이름 뒤에 괄호를 붙인 변수를 설정하여 만든다. my_home이라는 이름의 인스턴트가 생성되었고, 이 인스턴트는 Home 클래스에서 파생됨을 알 수 있다. 이 줄을 호출하면, Home 클래스의 __init__메서드가 호출된다.
my_home = Home()
이번에는 클래스에서 attributes라는 개념을 알아보자. attributes(속성)은 모든 메서드 외부에서 정의되고 클래스의 모든 인스턴스에 대해 동일한 값을 갖는 변수를 말한다. 속성은 인스턴트 이름이 아니라 클래스 이름을 통해 접근할 수도 있다. 클래스 이름을 통해 변수를 설정하면 모든 인스턴스에 대해 변경된다.
클래스에서 선언한 속성 외에 생성된 객체에서 속성을 추가하는 방법은 아래와 같다.
class Home:
def __init__(self, *args):
self.rooms = args[0]
self.stories = args[1]
def introduce(self):
print('rooms : %s' %self.rooms)
print('stories : %s' %self.stories)
a = Home(*['3', '2'])
b = Home('2', '1')
b.price = '350,000$'
print(b.price)
print(a.price)
#Output
#350,000$
#AttributeError: 'Home' object has no attribute 'price'
다음으로는 클래스에서 메서드라는 개념을 생각해보자. Method는 클래스의 일부로 정의된 함수를 의미한다. 일반적으로 dunder method를 포함한 모든 클래스 메서드의 첫 번재 매개변수는 self라고 불리며 실제 객체를 호출하는 메서드라 한다.
Reference
codeacademy
'DS > Python' 카테고리의 다른 글
[Python] skimr 대신 skimpy (0) | 2023.06.01 |
---|---|
[Python] Selenium 이용한 Googlemap 크롤링 (0) | 2023.05.25 |
[Python] Flask 사용하기: html 에 github의 py파일 불러올 때 (0) | 2023.05.11 |
[Python] html file 생성 (0) | 2023.04.28 |
[Python] assert (0) | 2023.02.24 |