카테고리 없음

내일배움캠프_파이썬 라이브러리_2회차

iron-min 2025. 9. 26. 15:46

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

이렇게 파이썬 코드 입력하는 ipynb 파일과 같은 폴더에 .py확장자를 가진 파일을 만들어줍니다.

그리고 여기다가 여러 함수들을 입력해주면

 

판다 라이브러리와 같이

ipynb파일에서

이런식으로 사용할 수 있습니다.

 

2. 클래스와 객체 : 설계도와 제품

클래스(Class)는 설계도, 객체(Object/인스턴스)는 설계도로 찍어낸 실체

 

※ __init__ 이해를 위한 코드처리과정

 

p1 = Person("철수", 25) 코드가 실행될 때 내부적으로 일어나는 일:

  1. 메모리에 Person 클래스의 새로운 객체가 생성됩니다.
  2. 이 객체를 초기화하기 위해 __init__ 메서드가 자동으로 호출됩니다.
    • self에는 새로 만들어진 객체(p1)가 바인딩됩니다.
    • name에는 "철수"가 전달됩니다.
    • age에는 25가 전달됩니다.
  3. __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()

 

 

본 예시에서 클래스 메서드의 역할입니다.

 

클래스 메서드는 클래스 자체에 묶여 작동하는 메서드입니다.

  1. 첫 번째 인수는 클래스 자체 (cls):
    • 일반 인스턴스 메서드는 첫 번째 인수로 인스턴스 자체인 self를 받지만, 클래스 메서드는 첫 번째 인수로 클래스 자체를 의미하는 cls를 받습니다.
    • 이를 통해 클래스 메서드는 클래스 변수(factory, count)에 접근하거나 수정할 수 있습니다.
  2. 인스턴스 속성 접근 불가:
    • 클래스 메서드는 특정 인스턴스(self)에 묶여 있지 않기 때문에, self.model과 같은 인스턴스 변수에는 직접 접근할 수 없습니다.
  3. 코드 내 역할:
    • made(cls): 현재까지 생성된 Car 인스턴스의 총 개수(클래스 변수 count)를 반환합니다.
    • move_factory(cls, new_name): 클래스 변수 factory의 값을 새로운 이름으로 변경합니다. 이는 모든 Car 인스턴스에 영향을 미칩니다.

 

본 예시에서 정적 메서드의 역할입니다.

 

정적 메서드는 클래스나 인스턴스와 독립적으로 작동하는 메서드입니다.

특징 및 용도

  1. 특정 인수가 없음:
    • self (인스턴스)나 cls (클래스)를 첫 번째 인수로 받지 않습니다.
    • 따라서 클래스 변수나 인스턴스 변수 모두에 직접 접근하거나 수정할 수 없습니다.
  2. 순수한 유틸리티 기능:
    • 주로 해당 클래스와 논리적으로 관련이 있지만, 클래스의 **상태(데이터)**를 건드릴 필요가 없는 유틸리티 함수를 정의할 때 사용됩니다.
  3. 코드 내 역할:
    • is_valid_model(name): 입력된 name이 유효한 모델 이름인지 (문자열이고 길이가 2 이상인지) 확인하는 유효성 검사 기능만 수행하며, Car 클래스의 어떤 변수도 사용하지 않습니다