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

+ Recent posts