1. 모듈: 함수들을 보관·배포하는 상자

이렇게 파이썬 코드 입력하는 ipynb 파일과 같은 폴더에 .py확장자를 가진 파일을 만들어줍니다.
그리고 여기다가 여러 함수들을 입력해주면

판다 라이브러리와 같이
ipynb파일에서


이런식으로 사용할 수 있습니다.
2. 클래스와 객체 : 설계도와 제품
클래스(Class)는 설계도, 객체(Object/인스턴스)는 설계도로 찍어낸 실체

※ __init__ 이해를 위한 코드처리과정
p1 = Person("철수", 25) 코드가 실행될 때 내부적으로 일어나는 일:
- 메모리에 Person 클래스의 새로운 객체가 생성됩니다.
- 이 객체를 초기화하기 위해 __init__ 메서드가 자동으로 호출됩니다.
- self에는 새로 만들어진 객체(p1)가 바인딩됩니다.
- name에는 "철수"가 전달됩니다.
- age에는 25가 전달됩니다.
- __init__ 내부 코드가 실행되어, 새로 만들어진 객체(p1)는 name이라는 속성에 "철수"를, age라는 속성에 25를 가지게 됩니다.
6. 메서드 3종과 변수 2종 : 제대로 구분하기
3. 메서드 3종과 변수 2종 : 제대로 구분하기
⊙ 인스턴스 변수 / 클래스 변수
| 인스턴스 변수 | 각 개체가 서로 다른 값을 가짐(self.name) |
| 클래스 변수 | 클래스가 공유하는 공통값(ClassName.cout) |
⊙ 인스턴스 / 클래스 / 정적 메서드
| 인스턴스 메서드 | 첫 인자로 self를 받고, 객체 상태를 사용 |
| 클래스 메서드 | @classmethod, 첫인자로 cls, 클래스 상태/대안 생성자 등 |
| 정적 메서드 | @staticmethod, self/cls 없음, 도우미 함수 역할 |
⊙ 예시
|
class Car:
factory = 'Seoul Plant'
count = 0
def __init__(self,model) :
self.model = model
Car.count += 1
def spec(self):
print(f"[{self.model}] from {Car.factory}")
@classmethod
def made(cls):
return cls.count
@classmethod
def move_factory(cls,new_name):
cls.factory = new_name
@staticmethod
def is_valid_model(name):
return isintance(name,str) and len(name) >= 2
|
결과
|
s1 = Car("Sonata")
s2 = Car("Ray")
Car.move_factory("Ulsan Plant")
s2.spec()
|

본 예시에서 클래스 메서드의 역할입니다.
클래스 메서드는 클래스 자체에 묶여 작동하는 메서드입니다.
- 첫 번째 인수는 클래스 자체 (cls):
- 일반 인스턴스 메서드는 첫 번째 인수로 인스턴스 자체인 self를 받지만, 클래스 메서드는 첫 번째 인수로 클래스 자체를 의미하는 cls를 받습니다.
- 이를 통해 클래스 메서드는 클래스 변수(factory, count)에 접근하거나 수정할 수 있습니다.
- 인스턴스 속성 접근 불가:
- 클래스 메서드는 특정 인스턴스(self)에 묶여 있지 않기 때문에, self.model과 같은 인스턴스 변수에는 직접 접근할 수 없습니다.
- 코드 내 역할:
- made(cls): 현재까지 생성된 Car 인스턴스의 총 개수(클래스 변수 count)를 반환합니다.
- move_factory(cls, new_name): 클래스 변수 factory의 값을 새로운 이름으로 변경합니다. 이는 모든 Car 인스턴스에 영향을 미칩니다.
본 예시에서 정적 메서드의 역할입니다.
정적 메서드는 클래스나 인스턴스와 독립적으로 작동하는 메서드입니다.
특징 및 용도
- 특정 인수가 없음:
- self (인스턴스)나 cls (클래스)를 첫 번째 인수로 받지 않습니다.
- 따라서 클래스 변수나 인스턴스 변수 모두에 직접 접근하거나 수정할 수 없습니다.
- 순수한 유틸리티 기능:
- 주로 해당 클래스와 논리적으로 관련이 있지만, 클래스의 **상태(데이터)**를 건드릴 필요가 없는 유틸리티 함수를 정의할 때 사용됩니다.
- 코드 내 역할:
- is_valid_model(name): 입력된 name이 유효한 모델 이름인지 (문자열이고 길이가 2 이상인지) 확인하는 유효성 검사 기능만 수행하며, Car 클래스의 어떤 변수도 사용하지 않습니다