클래스, 모듈, 패키지, 라이브러리 (python) (작성중)

juyeon·2022년 7월 24일
0

데이터 다루기

목록 보기
7/35

클래스

class FourCal:
	def setdata(self, first, second):
		self.first = first
		self.second = second
	def add(self):
		result = self.first + self.second
		return result
        
# 메서드 호출하기
# 1)
a = FourCal()
a.setdata(4, 2)

# 2)
a = FourCal()
FourCal.setdata(a, 4, 2)

# add 함수 사용
a.add() # 6
  • 객체를 통해 클래스의 메서드를 호출하려면 a.setdata(4, 2)와 같이 도트(.) 연산자를 사용

  • 파이썬 메서드(method: 클래스 안에 구현된 함수)의 첫 번째 매개변수 이름은 관례적으로 self를 사용한다. 객체를 호출할 때 호출한 객체 자신이 전달되기 때문에 self를 사용한 것이다. 물론 self말고 다른 이름을 사용해도 상관없다.

  • a 객체에 객체변수가 생성되고 값이 저장됨

생성자(Constructor)

class FourCal:
	def __init__(self, first, second):
		self.first = first
		self.second = second
	def add(self):
		result = self.first + self.second
		return result
        
a = FourCal(4, 2)
a.add() # 6

: setdata 대신에 __init__ 사용

  • 객체에 초깃값을 설정해야 할 필요가 있을 때는 setdata와 같은 메서드를 호출하여 초깃값을 설정하기보다는 생성자를 구현하는 것이 안전한 방법이다. 생성자란 객체가 생성될 때 자동으로 호출되는 메서드를 의미한다.

클래스의 상속

: 어떤 클래스를 만들 때 다른 클래스의 기능을 물려받을 수 있게 만드는 것

class MoreFourCal(FourCal):
	def pow(self):
		result = self.first ** self.second
		return result
        
a = MoreFourCal(4, 2)
a.pow() # 16

메서드 오버라이딩(Overriding, 덮어쓰기)

: 부모 클래스(상속한 클래스)에 있는 메서드를 동일한 이름으로 다시 만드는 것. 부모클래스의 메서드 대신 오버라이딩한 메서드가 호출된다.

클래스 변수

  • 클래스 변수는 클래스로 만든 모든 객체에 공유된다
class Family:
	lastname = "김"
    
# 클래스 변수를 변경하면?
Family.lastname = "박"

a = Family()
#  클래스로 만든 객체의 lastname 값도 모두 변경된다
print(a.lastname) # 박

# 클래스가 아니라 객체 a의 객체변수 lastname을 새로 생성하면?
a.lastname = "최"
# Family 클래스의 lastname과는 상관없다
print(b.lastname) # 박

모듈

: 함수나 변수 또는 클래스를 모아 놓은 파일
: 파이썬 확장자 .py로 만든 파이썬 파일은 모두 모듈이다.

import 모듈이름
: 모듈이름.모듈함수()

from 모듈이름 import 모듈함수
: 모듈함수()

from 모듈이름 import *
: 모듈의 모든 함수를 불러서 사용하겠다

  • __name__ 변수는 나중에 정리하기

패키지

: 도트(.)를 사용하여 파이썬 모듈을 계층적(디렉터리 구조)으로 관리할 수 있게 해준다.

  • 하위 패키지가 자동으로 import 되지 않을 때, 수동으로 import
    import 패키지명.모듈명
    import 패키지명.하위 패키지명

  • 예: Pandas, Numpy 등등

  • __init__.py 파일은 해당 디렉터리가 패키지의 일부임을 알려주는 역할을 한다. 만약 game, sound, graphic 등 패키지에 포함된 디렉터리에 __init__.py 파일이 없다면 패키지로 인식되지 않는다.

    • python3.3 버전부터는 __init__.py 파일이 없어도 패키지로 인식한다(PEP 420). 하지만 하위 버전 호환을 위해 __init__.py 파일을 생성하는 것이 안전한 방법이다.

라이브러리

: 패키지의 집합으로 패키지 보다 포괄적인 개념이지만, 혼용해서 사용

profile
내 인생의 주연

0개의 댓글