본문 바로가기
언어/Python

[Python] Class & Object,Module & Package, Exception Handling

by 바다의 공간 2024. 7. 27.

•       What is Python
•       Data Types
•       Logic
•       Function
•       I/O
•       Class & Object
•      Module & Package
•      Exception Handling


Class는 Object를 생성하기 위한 틀, Class is a template of Object
Object는 데이터와 기능을 묶은 프로그래밍 단위 

# Class
* 클래스 선언 
- class 클래스명:
데이터들... 
기능들...


# Object 
* 객체 생성
- 객체명 = 클래스명()


# self : 메모리에 생성된 객체 자신을 가리키는 키워드 (타 언어에서는 this) 


# Constructor (생성자)
* 객체의 데이터를 할당하기 위한 특별한 메서드 (__init__ 문법 사용) 
* 메서드는 모두 함수이며 객체로 접근하는 함수를 메서드라 함

 

함수는 기능정의하기 위해서 코드를 모아놓은것(def)

- 기능을 만들어놓으면 다 함수라고 합니다.

그 중에서 객체가 가진 함수는 매소드라고 합니다.

즉 매소드는 객체지향부터 나오게됩니다.

 

모든 매소드는 함수다(o)

모든 함수는 매소드다 (x)

함수중에서 객체로 접근하는 함수를 매소드라고 부릅니다

 


# 상속
* 이미 만들어져 있는 클래스를 상속 받아 사용함으로서 재사용성 (리유징)증진 
* 문법 : class 클래스명(상속받을클래스명):

상속받을게 없다면 class 클래스명(): 으로 작성하면 됩니다.

 

 


# 메서드 오버라이딩 (객체지향의 핵심)
* 두 클래스가 상속관계에 있을때 상위클래스의 메서드를 하위클래스의 메서드가 재정의 
* 동일한 형태의 메서드를 호출하는 객체의 타입에 따라 선택하게 하는 객체지향 기법


# 클래스 변수
* 클래스를 통해 생성되는 모든 객체들에 동일한 값이 필요할때 사용 
* 클래스 선언 하단에 클래스 변수를 선언

클래스 변수

- 클래스명은 대문자로 시작합니다(관례적)

-

#클래스
class Human:
    HumanCount = 0 #클래스 변수(객체들이 공유하는 변수)
    def __init__(self, name, age): #생성자 __init__
        self.name = name # 객체의 name변수 = 생성자 파라미터  name 변수
        self.age = age
    def setAge(self, age): #메소드 (setter : 객체변수의 값을 변경)
        self.age = age
    def getAge(self): # 메소드 (getter : 객체변수의 값을 가져옴)
        return self.age

 

그래서 새롭게 만든 클래스에 객체를 생성해보면

#객체 생성
hong = Human("홍길동", 28)
print(hong.age)

 

hong 이라는 객체에 Human클래스에 각각 ("name"과 28)을 넣어주고 

print(hong.name)을하게되면 홍길동 

pirnt(hong.age)를 하게되면 28이 출력되게 됩니다.

즉 뜻은 hong의 이름은? hong의 나이값은? 이라고 물어보게 되는것이죠.

단 클래스로 접근해야 클래서 변수의 역할을 합니다.

 

 

 

 


Module & Package

수많은 데이터와 로직들을 모듈화/패키지화 하는 것은 
프로그램의 확장성과 관리 측면에서매우 중요

 

# 모듈
* 함수나 변수를 모아놓은 프로그래밍 단위 (일반적으로 파일) 
* 모듈을 불러올때는 import 구문 사용 : import 모듈명
* 모듈에서 특정한 것들만 불러올때는 : from 모듈명 import 불러올것들... 


# __name__ == “__main__” : 모듈이 아닌 메인파일인지 검사


# 패키지
* 모듈을 계층적으로 관리하기 위한 프로그래밍 단위 (일반적으로 폴더) 
* 폴더내에 아무 내용이 없는 __init__.py 파일을 작성하면 파이썬에서 패키지로 인식 

- 단 파일에는 아무것도 안 만듭니다.
* import 패키지명.모듈명 으로 모듈을 호출하여 사용을 하여서 패키지를 사용합니다.

# module&package.py

import modules.calc.calc

result1 = modules.calc.calc.add(3, 5)
print(result1)

result2 = modules.calc.calc.multi(3, 5)
print(result2)

from modules.calc.calc import add, multi

print(add(5, 5))
print(multi(5, 5))

 

Exception Handling

예외란 프로그램 실행시점에 발생할 수 있는 에러
예외처리는 개발한 프로그램의 안정성을 높이는 중요한 프로그래밍 이슈

 

# 예외처리 문법
* try:       예외발생 가능한 코드블럭
except:   예외를 처리하기 위한 코드블럭 
finally:   예외발생과 상관없이 수행할 코드블럭


# raise
* 예외를 일부러 발생시키기 위한 키워드 


# 사용자정의 예외 만들기
* Exception클래스를 상속받아 __str__메서드를 오버라이딩