Class
1. 클래스 생성 및 기초
같은 객체를 여러개 만들어야할 때, 클래스를 만들어두면 인스턴스를 쉽게 생성할 수 있다.
class Bank:
def __init__(self, name):
self.name = name
def get_name(self):
return self.name
def call_name(self, num):
print("좋아 은행의 %s고객님은 %d번째 손님입니다" % (self.name, num))
x = Bank("Jack")
print(x.get_name)
x.call_name(3)
1)메소드는 def 함수명(변수): 내용
2) self라는 인수는 입력하지 않아도 알아서 인스턴스 명으로 호출되어 들어간다
3) __init__은 생성자로 클래스로 인스턴스를 만들때 반드시 해야할 것이 무엇인지 정한다.
(위의 예에서는 name값을 정해야함)
2. 클래스 상속
클래스를 만들 때, 다른 클래스의 기능을 물려받을 수 있다.
1) 클래스 상속 및 메서드 오버라이딩
class GoodBank:
def __init__(self, name):
self.name = name
def get_name(self):
return self.name
def call_name(self, num):
print("좋아 은행의 %s고객님은 %d번째 손님입니다" % (self.name, num))
#class 클래스명(상속받을 클래스명): 이렇게 하면 클래스 상속이 된다.
class BadBank(GoodBank):
def call_name(self, num):
print("싫어 은행의 %s고객님은 %d번째 손님입니다" % (self.name, num))
#메서드 이름을 동일하게 정하고, 그 내용만 변한다면 오버라이딩(overriding)된다.
a=BadBank('Tom')
print(a.get_name())
a.call_name(4)
2) 연산자 오버로딩
연산자 오버로딩이란 연산자 (+, -, *, / 등)를 객체끼리 사용할 수 있게 하는 방법
class GoodBank:
def __init__(self, name):
self.name = name
def get_name(self):
return self.name
def call_name(self, num):
print("좋아 은행의 %s고객님은 %d번째 손님입니다" % (self.name, num))
def __add__(self, other):
print("%s와 %s은 다른 은행의 고객이네요" %(self.name, other.name))
#연산자 오버로딩.
#다른 인스턴스의 변수를 불러오려면 인스턴스명.변수를 해야한다. (other.name)
class BadBank(GoodBank):
def call_name(self, num):
print("싫어 은행의 %s고객님은 %d번째 손님입니다" % (self.name, num))
x=GoodBank("Jackson")
y=BadBank("Tom")
x+y
#Jackson와 Tom은 다른 은행의 고객이네요
모듈
모듈이란 함수, 변수, 클래스를 모아놓은 파일.
즉, 다른 파이썬 파일을 불러와서 현재 작업하는 파이썬 파일에서 사용하도록 도움
단, 정상적으로 모듈을 사용하기 위해서는 두 파일이 같은 디렉토리에 존재해야한다.
1) 모듈 사용법
import 모듈명 을 통해서 모듈을 사용함.
메소드 일부만 불러오고 싶을때는
from 모듈명 import 메소드1, 메소드2, 메소드3
이렇게 불러옴.
from 모듈명 import * (모든 것을 불러옴)
#모듈1.py
def sum(a,b):
print(a+b)
#나의 py파일
import 모듈1
모듈1.sum(1,10)
#결과 : 11
2. if __name__ == "__main__"
모듈을 import했을 때, 엉뚱한 결과값들이 출력될 수가 있다.
#모듈1.py
def sum(a,b):
print(a+b)
print("안녕 나는 모듈1이야")
#나의 py파일
import 모듈1
모듈1.sum(1,10)
#결과:
#안녕 나는 모듈1이야
#11
이런 상황을 피하기 위해서, 실행 결과들을 모두 모듈1.py 마지막 부분에 if __name__ == "__main__" 구간에 넣도록 한다.
그러면 모듈1.py가 직접 실행되었을때만 결과값들이 도출된다.
#모듈1.py
def sum(a,b):
print(a+b)
if __name__ == "__main__" :
print("안녕 나는 모듈1이야")
#나의 py파일
import 모듈1
모듈1.sum(1,10)
#결과:
#11
패키지
파이썬 모듈들을 계층적으로 관리하기 위한 것.
디렉토리 찾는 방법은 현재 작업중인 파이썬 파일이 있는 곳에서부터 경로 시작.
relative하게 찾으려면 ..경로
여기서 ..은 부모디렉토리를 말함
#folderA\folderB\echo.py
def echo():
print("echo!")
#같은 패키지의 echo.py를 다른 py파일에서 사용해보자
import folderA.folderB.echo
#from folderA.folderB import echo 이런 형식도 가능
folderA.folderB.echo.echo()
#결과 echo!
'Python > 기초' 카테고리의 다른 글
Time / Datetime (날짜, 시간 모듈) (0) | 2020.03.18 |
---|---|
8. Python의 여러 내장함수 (0) | 2019.09.26 |
6. 파이썬의 함수, 입출력 (0) | 2019.09.22 |
5. 파이썬의 조건문(if, while, for) (0) | 2019.09.21 |
4. 파이썬의 자료형(딕셔너리, 집합) (0) | 2019.09.19 |