파이썬(24~27)
name에는 모듈이름이 저장되거나 '_main'이 저장된다.
name : main
전역변수 __name을 이용한 실행파일 지정
ex) 5_014 파이썬파일(정수패키지, 실수패키지)
site -packages에 있는 모듈은 어디서나 사용할 수 있다.
클래스는 class 키워드와 속성(변수) 그리고 기능(함수)를 이용해서 만든다.
객체는 클래스의 생성자를 호출한다.
변수는 객체의 메모리 주소를 저장하고 이를 이용해서 객체를 참조한다.
class Robot: #클래스 생성.
def __intit__(self, color, height, weight): #속성3가지
self.color = color
self.height = height
self.weight = weight #초기설정값
def printRobotInfo(self):
print(f'color : {self.color}')
print(f'height : {self.height}')
print(f'weight : {self.weight}')
객체를 생성.(생성자는 클래스와 이름이 같다.)(변수까지 작성해야 한다.)
rb1 = Robot('red', 200, 80)
rb2 = Robot('blue', 300, 120)
rb1.printRobotInfo()
rb2.printRobotInfo()
출력값 :
color : red
height : 200
weight : 80
color : blue
height : 300
weight : 120
복사본 만들기 : ex) scores = () , print(scores)
copyScores = scores.copy()
import copy
얕은 복사 : 객체 주소를 복사하는 것으로 객체 자체가 복사되지 않는다.
깊은 복사 :
상속이란 클래스는 또 다른 클래스를 상속해서 내 것처럼 사용할 수 있다.
ex) TurboCar는 NormalCar상속을 받으면 NormalCar 기능도 같이 사용가능.
class NormalCar:
def drive(self):
print('[Normalcar] drive() called!!')
def back(self):
print('[Normalcar] back() called!!')
class TurboCar(NormalCar):
def turbo(self):
print('[TurboCar] turbo() called!!')
myTurboCar = TurboCar()
myTurboCar.turbo()
myTurboCar.drive()
myTurboCar.back()
출력값 :
[TurboCar] turbo() called!!
[Normalcar] drive() called!!
[Normalcar] back() called!!
객체가 생성될 때 생성자를 호출하면 init()가 자동 호출된다.
ex)
class Calculator:
def __init__(self, n1, n2):
self.num1 = n1
self.num2 = n2
cal = Calculator(10, 20)
print(f'cal.num1 : {cal.num1}')
print(f'cal.num2 : {cal.num2}')
출력값 :
cal.num1 : 10
cal.num2 : 20
상위 클래스의 속성을 초기화하기 위해서 super()를 이용한다.
ex)
class BasicCalculator:
def add(self, n1, n2):
return n1 + n2
def sub(self, n1, n2):
return n1 - n2
def mul(self, n1, n2):
return n1 * n2
def div(self, n1, n2):
return n1 / n2
class DeveloperCalculator:
def mod(self, n1, n2):
return n1 // n2
def flo(self, n1, n2):
return n1 % n2
def exp(self, n1, n2):
return n1 ** n2
class Calculator(BasicCalculator, DeveloperCalculator):
def init(self):
pass
cal = Calculator()
print(f'cal.add(10,20) : {cal.add(10,20)}')
print(f'cal.sub(10,20) : {cal.sub(10,20)}')
print(f'cal.exp(10,20) : {cal.exp(10,20)}')
출력값 :
cal.add(10,20) : 30
cal.sub(10,20) : -10
cal.exp(10,20) : 100000000000000000000
*다중 상속 너무 남발하면 안됨(필요할 때만)