모듈: 독립적인 기능을 수행하는 구성 단위 의미
코드 재사용성
엔트리포인트 : 프로그램의 진입점(시작점, 시작 트리거)
__name__=="__main__"

test_module.py
print("# 모듈의 __name__ 출력하기")
print(__name__)
print()
main.py
import test_module
print("# 메인의 __name__ 출력하기")
print(__name__)
print()
#코드 실행 지점의 name은 __main__으로 나오고
#실행 지점이 아닌 파일(모듈)의 name은 파일명으로 나옴
#엔트리포인트 : 실행지점
if __name__=="__main__":
#이 py파일이 엔트리포인트(직접실행)으로 실행되었다면
#모듈로 쓰이지 않는 경우
print("엔트리 포인트로 실행 되었음")
new\test_module.py
PI = 3.141592
def number_input():
output = input("숫자 입력> ")
return float(output)
def get_circumference(radius):
return 2 * PI * radius
def get_circle_area(radius):
return PI * radius * radius
print("get_circumference(10):", get_circumference(10))
print("get_circle_area(10):", get_circle_area(10))
new\main.py
import test_module as test
radius = test.number_input()
print(test.get_circumference((radius)))
print(test.get_circle_area((radius)))

조건
#파일명: gilminjun
# if name != __main__ 활용해서 모듈 사용자에게 설명서 제공
#(어떤 함수가 있고, 사용법이 어떻게 되는지, 매개변수 설명)
def hello(a):
for i in range(a):
print("hello")
if __name__ != '__main__':
print("이 모듈은 기능 1개를 제공하고 기능명은 hello이고 매개변수를 입력해주세요")
gilminjun.py
def triangle_area(base, height):
return base * height / 2
def rectangle_area(base, height):
return base * height
pi = 3.141592
def circle_area(radius):
return pi * radius ** 2
if __name__ == "__main__":
print("이 모듈은 도형의 넓이를 계산하는 기능을 제공합니다.")
print("함수명 : triangle_area(base, height)")
print("함수명 : rectangle_area(base, height)")
print("함수명 : circle_area(radius)")
print("매개변수 설명:")
print("base : 밑변 길이")
print("height : 높이")
print("radius : 반지름")
print("사용 예시:")
print("import gilminjun")
print("area = gilminjun.triangle_area(10, 5)")
print("print(area)")
test.py
import gilminjun
areat = gilminjun.triangle_area(10, 5)
print(areat)
arear = gilminjun.rectangle_area(10, 5)
print(arear)
areac = gilminjun.circle_area(5)
print(areac)
패키지: 모듈이 모여 구조를 이룬 것
패키지 만들기

인코딩: 숫자와 알페벳을 대응하는 방법, 0과1
반대는 디코딩
ASCII, 유니코드, (utf)
이미지 읽어 들이고 저장하기

패키지 설치



클래스
OOP(객체 지향 프로그래밍): 현실 세계의 객체의 개념을 기반으로 데이터를 속성(필드)과 기능(메서드)으로 묶어 프로그램을 설계하는 방식
POP(절차 지향 프로그래밍): 프로그램을 일련의 순차적인 처리 과정으로 바라보는 방식, 프로그램이 수행해야 할 일을 순서대로 나열하고, 각 작업을 독립적인 함수(프로세스)로 분리하여 작성
객체: 속성과 메소드를 갖는것(클래스 기반으로 만듦), 속성을 가질 수 있는 모든 것
추상화: 프로그램에서 필요한 요소만을 사용해서 객체를 표현하는 것
class 선언
class 클래스 이름:
클래스 내용
클래스는 클래스 이름과 같은 함수(생성자)를 사용해 객체를 만듦
인스턴트 이름(변수 이름) = 클래스 이름()
클래스 => 붕어빵 틀
인스턴스 => 붕어빵
생성자: 클래스 이름과 같은 함수
class 클래스 이름:
def __init__(self, 추가적인 매개변수):
pass
class Student:
def __init__(self,name,korean,math,english,science): # 생성자함수 정의
self.name=name#자기자신
self.korean=korean
self.math=math
self.english=english
self.science=science
students = [
Student("윤인성", 87,98,88,95),
Student("연하진", 92,98,96,98),
Student("구지연", 76,96,94,90),
Student("나선주", 98,92,96,92),
Student("윤아린", 95, 98, 98, 98),
Student("윤명월", 64, 88, 92, 92)
]
students[0].name
students[0].korean
students[0].math
students[0].english
students[0].science
class Test:
def __init__(self, name):
self.name = name
print("{} - 생성되었습니다.".format(self.name))
def __del__(self):# 자동으로 처리
print("{} - 파괴되었습니다.".format(self.name))
print("111111")
test = Test("A")
print("222222")
#가비지 컬렉터: 더 사용할 가능성이 없는 데이터를 메모리에서 제거하는 역할
생성자 : 인스턴스가 생성
소멸자 : 인스턴스가 제거, 클래스 내 __del__함수를 선언해서
메소드: 클래스가 가지고 있는 함수
class human:
def __init__(self, name):
self.name = name
def __del__(self):
print("파괴")
def walk(self): # 인스턴스의 기능
print("앞으로 걷는다")
def eat(self):
print("음식 섭취")
h = human("A")#객체(인스턴스) 생성
h.walk() #기능(메서드 호출)

isinstance() 여부 확인 => T/F
instance(인서턴스, 클래스)

instance() 함수와 type() 함수로 확인하는 것의 차이

isinstance() 함수 활용


__str__()함수

클래스 변수
class 클래스 이름:
클래스 변수 = 값


class test:
x=10 #클래스 변수 : 클래스 구조 내 변수 : 객체 간 공유
@classmethod # 클래스 메서드
def count(cls): #self x cls 표기
pass
def __init__(self, name):#인스턴스 메서드
self.name = name
test.x=test.x+10
print(test.x)#10
t1=test("1번")
t2=test("2번")
test.count()
#클래스 변수, 클래스 메서드 -> 클래스명, 변수 or 클래스명, 클래스메서드명()
#인스턴스메서드 -> 인스턴스.인스턴스메서드명()
class 클래스 이름:
@classmethod
def 클래스 함수(cls, 매개변수):
pass
class Student:
count = 0
students = []
@classmethod
def print(cls):
print("------학생 목록------")
print("이름\t총점\t평균")
for student in cls.students:
print(str(student))
print("------ ------ ------")
def __init__(self, name, korean, math, english, science):
self.name = name
self.korean = korean
self.math = math
self.english = english
self.science = science
Student.count += 1
Student.students.append(self)
def get_sum(self):
return self.korean + self.math + self.english + self.science
def get_average(self):
return self.get_sum() /4
def __str__(self):
return str("{}\t{}\t{}".format(self.name, self.get_sum(), self.get_average()))
Student("윤인성", 87, 98, 88, 95)
Student("연하진", 92, 98, 96, 98)
Student("구지연", 76, 96, 94, 90)
Student("나선주", 98, 92, 96, 92)
Student("윤아린", 95, 98, 98, 98)
Student("윤명월", 64, 88, 92, 92)
Student("김미화", 82, 86, 98, 88)
Student("김연화", 88, 74, 78, 92)
Student("박아현", 97, 92, 88, 95)
Student("서준서", 45, 52, 72, 78)
Student.print()

class animal:
def __init__(self, name, age):
self.name = name #밖에서 접근 가능 pub
self.__age = age #밖에서 접근 불가 pri
a=animal('동물이름', '동물나이')
print(a.name)
#print(a.__age)
#접근 불가 -> 수정 불가
a.name="강아지"
a.__age(50)
print(a.name)
print(a.__age)
a.__age=1000
print(a.__age)
private var 만드는 이유 : 데이터 보호
데이터 무결성 유지
캡슐화 (내부 로직 은폐)
프라이빗 변수 수정/참조 => 게터/세터
getter : 참조
setter : 수정
프라이빗 변수의 값을 추출하거나 변경할 목적으로, 간접적으로 속성에 접근하도록 해주는 함수
import math
class Circle:
def __init__(self, radius):
self.__radius = radius
def get_circumference(self):
return 2 * math.pi * self.__radius
def get_area(self):
return math.pi * (self.__radius ** 2)
def get_radius(self):
return self.__radius
def set_radius(self, value):
self.__radius = value
circle = Circle(10)
print("# 원의 둘레와 넓이를 구합니다.")
print("원의 둘레:", circle.get_circumference())
print("원의 넓이:", circle.get_area())
print()
print("#__radius에 접근합니다.")
print(circle.get_radius())
print()
circle.set_radius(2)
print("# 반지름을 변경하고 원의 둘레와 넓이를 구합니다.")
print("원의 둘레:", circle.get_circumference())
print("원의 넓이:", circle.get_area())


@property 조회
@ radius.setter 수정
상속: 어떤 클래스를 기반으로 그 속성과 기능을 물려받아 새로운 클래스를 만드는 것
다중 상속: 다른 누군가가 만들어 놓은 형태들을 조립해서 내가 원하는 것을 만드는 것
부모클래스, 슈퍼클래스, 기반클래스
자식클래스, 서브클래스, 파생클래스
자식 클래스로써 부모의 함수 재정의(오버라이드)하기


상속: 다른 클래스의 모든 것을 물려 받아 새로운 클래스 만듬(IS-A 관계 나타낼 때 활용)
구성: 다른 클래스를 갖고, 필요할 때마다 활용하는 것(HAS-A 관계)
게임 만들기
사용자 입력
tick(사용자 입력 1번에 1틱)
실행은 터미널에서(cmd, powershell)
4인 1조
'로보테크AI' 카테고리의 다른 글
| 융합_로보테크 AI 자율주행 로봇 개발자 과정-26/01/08 (0) | 2026.01.08 |
|---|---|
| 융합_로보테크 AI 자율주행 로봇 개발자 과정-26/01/07 (0) | 2026.01.07 |
| 융합_로보테크 AI 자율주행 로봇 개발자 과정-26/01/05 (0) | 2026.01.05 |
| 융합_로보테크 AI 자율주행 로봇 개발자 과정-26/01/02 (0) | 2026.01.02 |
| 융합_로보테크 AI 자율주행 로봇 개발자 과정-25/12/31 (0) | 2025.12.31 |