💾 Backend/Python
Python 클래스
hjinn0813
2024. 6. 19. 14:04
728x90
프로그래밍 언어의 종류
- 절차지향 : 전체 코드가 유기적으로 연결되어 실행 순서가 정해져 있어서 유지/보수가 어렵다. (C언어)
- 객체지향 : 데이터와 기능을 하나의 객체로 묶고, 객체의 모음이 상호작용하며 프로그램을 구성한다.
오류가 있으면 해당 부분만 수정하면 되기 때문에 유지/보수가 편리하다. (python, c++, java)
- 클래스 : 객체를 만드는 틀, 공통된 속성과 연산을 갖는 객체의 집합.
객체지향 프로그램에서 데이터를 추상화하는 단위. 하나의 클래스로 여러 개의 객체를 만든다. - 객체 : 클래스로부터 만들어진 것. 속성을 가질 수 있는 모든 것.
여기서 속성이란 클래스나 객체에 소속된 변수/함수를 의미한다.
같은 클래스에서 만들어진 객체는 서로 영향을 주지 않는다.
'인스턴스'라고도 부르는데, 클래스의 객체를 관계 중점으로 표현할 때 사용한다.
- 메소드 (method) : 클래스나 객체에 소속된 함수
- 필드 (field) : 클래스나 객체에 소속된 변수. 인스턴스 변수와 클래스 변수로 나눌 수 있다.
- 인스턴스 변수 : 클래스에서 생성된 객체에 속하는 변수. 서로 공유되거나 영향받지 않는다.
- 클래스 변수 : 클래스 그 자체에 속하는거라, 해당 클래스에서 생성된 모든 객체가 공유한다.
객체를 생성하지 않아도 사용 가능.
클래스 내부/외부에서 접근할 때 [클래스명.변수명] 형태로 사용해야 한다.
클래스 메소드와 함수의 차이
메소드는 self 변수가 항상 매개변수 목록의 맨 앞에 위치한다.
매개변수가 없을 때에도 self는 현재 객체 자신을 의미하기 때문에 꼭 작성해야 한다.
## 클래스 메소드와 함수의 차이
'''
정의: 메소드(self, 매개변수1, 매개변수2, …)
호출: 메소드(매개변수1, 매개변수2)
-> python이 자동으로 self 변수에 값을 할당한다
'''
class Person:
def say_hello(self):
print('Hi!! Nice to meet you.')
p = Person() # 객체 p에 클래스 할당
p.say_hello() # 클래스에 들어있는 메소드 호출
init 메소드
생성자(Constructor)라고 부르기도 한다.
인스턴스의 초기값을 설정할 때 사용하고, 클래스에서 인스턴스가 만들어질 때 자동으로 호출된다.
init을 정의할 때는 앞/뒤에 밑줄 2개씩 입력해야 한다.
init은 직접 호출되지 않고, 클래스에서 객체를 생성할 때 괄호에 인자로 넣어서 초기값을 설정한다.
class Person:
count = 0 # 클래스 변수
def __init__(self, name, age):
self.name = name
self.age = age
Person.count = Person.count + 1
# 객체가 생성될 때마다 증가
def say_hello(self):
print('Hi!! Nice to meet you.')
def about_me(self):
print('I am ' + self.name + ' (' + str(self.age) + ')')
suzy = Person('Suzy', 20)
suzy.say_hello()
suzy.about_me()
'''
Person이라는 클래스를 만들고 내부에 메소드 생성.
suzy라는 객체를 만들어서 클래스에 이름, 나이 할당.
해당 객체에 들어있는 이름(suzy)과 나이(20)가 초기값이 된다.
Person 클래스가 만들어졌기 때문에,
아래와 같이 다른 객체도 생성 가능하다.
'''
minho = Person('Minho', 23)
minho.say_hello()
minho.about_me()
print('** 총 ' + str(Person.count) + '명 **')
yeji = Person('Yeji', 21)
yeji.say_hello()
yeji.about_me()
print('** 총 ' + str(Person.count) + '명 **')
※ 코드 확인하기 → https://github.com/hjinn0813/python-start
GitHub - hjinn0813/python-start: 2024.06 study basic of python
2024.06 study basic of python. Contribute to hjinn0813/python-start development by creating an account on GitHub.
github.com
728x90