TIL - 03/26 - Python - 2

Sung Jun Jin·2020년 3월 26일
0

TIL

목록 보기
6/25
post-custom-banner

Class

자동차 클래스를 정의해보자

class Car :
  def __init__(self,maker,model,horse_power) :
    
    self.maker = maker
    self.model = model
    self.horse_power = horse_power
  
  def honk(self) :
    return f"{self.maker} 빠라바라바라밤"
    
hyundai = Car("현대","제네시스",500) # 클래스의 instance 생성

print(hyundai.model) # 출력 : 제네시스

print(hyundai.honk()) # 출력 현대 빠라바라바라밤   
        
    

정리

  • 맨 처음 init 메소드는 클래스가 실체화, 즉 instance로 만들 때 호출되는 메소드이다

  • 클래스를 실체화 시키면 객체(object)가 된다

  • init 메소드의 좌,우에는 두 개의 underscore(__)가 있다. 이렇게 생긴 메소드들을 special method라고 부른다

  • self는 클래스의 instance인 객체(object)를 가르킨다. self는 init 메소드가 실행될때 자동으로 객체화되어 넘어간다.

  • 클래스 내부에서 정의된 함수를 메소드라고 한다.

  • 모든 메소드의 첫번째 인자는 무.조.건 self가 들어가야 한다.

Alternative ways to import modules

import 키워드 외에 from import 키워드를 사용해서 모듈을 불러들일수 있다.

예를 들어 my_module 모듈에서 my_module_func 함수와 my_module_var 변수를 import 하고자 한다면 다음처럼 할 수 있다

from my_module import my_module_func, my_module_var

별표를 사용하면 해당 요소 모두 import 가능하다. 하지만 변수명의 충돌 오류가 일어날수 있다.

from my_module import *

import as 키워드를 사용해 원하는대로 새로운 이름을 주어서 사용할 수 있다.

# my_module.py의 my_module_func()를 func1로써 사용하겠다.
from my_module import my_module_func as func1

# my_module2.py의 my_module_var()를 func2로써 사용하겠다.
from my_module2 import my_module_var as func2

# my_module3 모듈을 m3로써 사용하겠다.
import my_module3 as m3

Packages

Package는 여러 개의 파이썬 파일(module)로 이루어진 디렉토리이다.

Module과 똑같은 방식으로 import 해주면 된다. 'dot notation'으로 사용하고 싶은 모듈을 지정해주면 된다.

#pkg 패키지의 mod1 모듈을 import
import pkg.mod1

#pkg2 패키지의 module2의 function_2()를 func2로써 사용하겠다.
from pkg2.module2 import function_2 as func2

Package가 import될때 초기 설정을 해줘야 할 때가 있는데 init.py에 의해서 자동적으로 실행된다.

init.py에서 일반적으로 실행되는 사항들이다

  • Import 할때 경로의 총 길이 줄여주기
  • Package에서 import 할 수 있는 변수/함수/클래스 제한하기
  • 그 외 package가 import될때 꼭 먼저 실행되어야 하는 코드들

다름 사람의 패키지를 사용하기 위해서는 패키지를 설치해줘야 한다. PIP이라는 툴을 사용해야 하는데 PIP은 파이썬의 패키지 매니저라고 할 수 있다.

ex) django 패키지를 설치할 때

터미널에 입력하는 명령

pip install django
profile
주니어 개발쟈🤦‍♂️
post-custom-banner

0개의 댓글