728x90
1. 파이썬의 클래스
2. 파이썬의 객체
파이썬의 클래스
클래스란 객체를 만들기 위한 설계도로 생각할 수 있다. 클래스 설계 시 다른 언어에서는 변수와 메소드를 같이 생각해야한다. 하지만 파이썬의 경우 객체 생성에 필요한 변수는 파이썬이 알아서 만들어 주기 때문에 메소드 설계에 집중할 수 있다. 또, 객체 내에 변수가 생성되는 시점은 변수를 대상으로 대입 연산이 처음 진행된 순간부터다.(ex. self.i = i)
* 파이썬의 클래스는 클래스이자 객체
* 사용자가 직접 정의하는 클래스들은 type 클래스(함수처럼 사용 가능)의 객체
1. __init__ 메소드
클래스 설계 시 __init__ 메소드를 만들면 클래스를 통해 객체를 만들 때 변수를 초기화 시켜줄 수 있다. __init__메소드는 객체 생성과정에서 자동 호출되며, 이 과정에서 __init__ 메소드 안에 있는 연산(일반적으로 초기화 작업)을 실행한다. 만약 클래스 설계 시 __init__메소드가 없다면, setter 함수를 따로 만들고, 수동으로 변수를 초기화하는 과정을 거쳐야한다.
# __init__ 사용 예시
class TestClass:
def __init__(self): # TestClass 내에 있는 변수 i를 1로 초기화
self.i = 1
def getter(self):
return self.i
tc = TestClass()
print(tc.getter()) # 1
# __init__ 없을 떄 수동으로 변수 초기화하는 예시
class NoInitClass:
def setter(self, i):
self.i = i
def getter(self):
return self.i
2. 클래스에 변수, 함수 추가
* 객체에 찾는 변수가 없다면, 해당 객체의 클래스로 찾아가서 변수를 찾는다. 아래 예시에서 찾는 변수는 z
class TestClass:
def __init__(self, i): # TestClass 의 매개별수로 들어온 i로 클래스 내 변수를 초기화
self.i = i
def getter(self):
return self.i
# 클래스에 변수 추가
TestClass.z = -1 # 클래스 내에 변수 z를 만들고 -1로 초기화
print(TestClass.z) # -1
tc1 = TestClass(2)
tc2 = TestClass(3)
print(tc1.z, tc1.getter()) # -1 2
print(tc2.z, tc2.getter()) # -1 3
# 클래스에 함수 추가
TestClass.hello = lambda: print("Hi") # 클래스 내에 함수 hello를 추가하고 람다식으로 기능 추가
print(TestClass.hello()) #Hi
파이썬의 객체
클래스 내에 존재할 수 있는 함수, 변수를 외부에서 선언 했듯 객체 단위에서도 같은 개념을 적용할 수 있음.
class TestClass:
pass
tc = TestClass() # TestClass 의 객체 생성
# 객체 tc에 변수 z 추가
tc.z = -1
print(tc.z) # -1
# 객체 tc에 함수 추가
tc.hello = lambda: print("hello")
print(tc.hello()) #hello
728x90
'# Programming Language > Python' 카테고리의 다른 글
[Python] 파이썬 정리(11)_Object 클래스에 있는 메소드 (0) | 2021.07.31 |
---|---|
[Python] 파이썬 정리(10)_상속 (0) | 2021.07.31 |
[Python] 파이썬 정리(8)_문자열 조합(표현식 기반, 메소드 기반) (0) | 2021.04.26 |
[Python] 파이썬 정리(7)_정렬_sort/sorted/enumerate (0) | 2021.04.26 |
[Python] 파이썬 정리(6)_집합_set/frozenset (0) | 2021.04.16 |