목록전체 글 (305)
RUBY
텍스트파일 쓰기 기본함수 open(), read(), write(), close()를 이용한 텍스트 파일 다루기 파일 열기 파일을 생성할때에 사용하는 함수 open() open() 함수 기본 모양 def open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True): def open(file, mode='r'): open 함수는 파일을 열고 해당 파일에 대한 스트림을 반환한다. 파일 열기를 실패했을때는 Error를 발생시킨다. 첫번째 인자 file - 파일 경로를 집어 넣는다. 두번째 인자 mode - 파일이 열리는 옵션, 모드. 이 모드에 따라 읽기 용인지 파일을 생성하고 쓸것인지 등이 정해진다. -..
Exception Exception 예외 담당 클래스 Exception을 상속받아서 새로운 클래스를 만든다. 그리고 __init__ 메서드에서 기반 클래스의 __init__ 메서드를 호출하면서 에러 메시지를 넣어준다. class 예외이름(Exception): def __init__(self): super().__init__('에러메시지') 입력된 숫자가 3의 배수가 아닐 때 발생시킬 예외 class NotThreeMultipleError(Exception): # Exception을 상속받아서 새로운 예외를 만듦 def __init__(self): super().__init__('3의 배수가 아닙니다.') def three_multiple(): try: x = int(input('3의 배수를 입력하세요: ..
try ~ except ~ else try ~ except ~ else 예외가 발생하지 않은 경우 실행하는 구문이다. else는 except 바로 다음에 와야 하며 except를 생략할 수 없다. try: 실행할 코드 except: 예외가 발생했을 때 처리하는 코드 else: 예외가 발생하지 않았을 때 실행할 코드 10을 입력된 숫자로 나누고 예외가 발생하지 않으면 계산 결과를 출력 try: x = int(input('나눌 숫자를 입력하세요: ')) y = 10 / x except ZeroDivisionError: # 숫자를 0으로 나눠서 에러가 발생했을 때 실행됨 print('숫자를 0으로 나눌 수 없습니다.') else: # try의 코드에서 예외가 발생하지 않았을 때 실행됨 print(y) 2를 입..
예외 예외란, 문법적인 문제는 없으나 실행 중 발생하는 예상하지 못한 문제이다. 예외 관련 클래스는 Exception 클래스를 상속한다. 예외 처리 예상하지 못한 예외가 프로그램 전체에 영향이 없도록 처리하자. try ~ except 예외 발생 예상 구문을 try ~ except로 감싼다. try: 실행할 코드 except: 예외가 발생했을 때 처리하는 코드 숫자를 0으로 나누었을 때 발생하는 예외를 처리해보자 try: x = int(input('나눌 숫자를 입력하세요: ')) y = 10 / x print(y) except: # 예외가 발생했을 때 실행됨 print('예외가 발생했습니다.') 숫자를 0으로 나누면 ZeroDivisionError 예외가 발생한다. 여기서는 except에서 예외 처리를 하..
추상클래스 상위 클래스에서 하위 클래스에 메서드 구현을 강요한다. 메서드 목록만 가진 클래스이며 상속받는 클래스에서 메서드 구현을 강제하기 위해 사용한다. 추상 클래스를 만들려면 import로 abc 모듈을 가져와야 합니다( abc는 abstract base class의 약자입니다) 그리고 클래스의 ( )(괄호) 안에 metaclass=ABCMeta를 지정하고, 메서드를 만들 때 위에 @abstractmethod를 붙여서 추상 메서드로 지정합니다. 추상 클래스를 상속받았다면 @abstractmethod가 붙은 추상 메서드를 모두 구현해야 한다. 추상 클래스는 인스턴스로 만들 수가 없다. 추상클래스는 인스턴스로 만들 때는 사용하지 않으며 오로지 상속에만 사용한다. 그리고 파생클래스에서 반드시 구현해야 할 ..
오버라이딩 오버라이딩 하위 클래스에서 상위 클래스의 메서드를 재정의(override)한다. 오버라이딩 - 무시하다, 우선하다. 말 그대로 기반 클래스의 메서드를 무시하고 새로운 메서드를 만든다는 뜻이다. 오버라이딩 사용 이유 - 보통 프로그램에서 어떤 기능이 같은 메서드 이름으로 계속 사용되어야 할 때 메서드 오버라이딩을 활용합니다. class Person: def greeting(self): print('안녕하세요.') class Jieun(Person): def greeting(self): super().greeting() # 기반 클래스의 메서드 호출하여 중복을 줄임 print('저는 김지은입니다.') james = Jieun() james.greeting() 중복되는 기능은 파생 클래스에서 다시 ..
다중 상속 다중 상속 2개 이상의 클래스를 상속한다. 다중 상속은 여러 기반 클래스로부터 상속을 받아서 파생 클래스를 만드는 방법입니다. 다음과 같이 클래스를 만들 때 ( )(괄호) 안에 클래스 이름을 ,(콤마)로 구분해서 넣습니다. class 기반클래스이름1: 코드 class 기반클래스이름2: 코드 class 파생클래스이름(기반클래스이름1, 기반클래스이름2): 코드