
class BlackBox:
pass
b1 = BlackBox(); # 인스턴스 생성
b1.name = '까망이' # 멤버변수 선언 및 할당
print(b1.name) # 까망이
print(isinstance(b1, BlackBox) # True # b1이 BlackBox의 인스턴스 인가?
생성자 함수 파라미터에 기본값이 설정되어 있지 않기 때문에
인스턴스 생성 시 반드시 모든 파라미터를 넣어줘야한다.
class BlackBox:
# 생성자 함수, __init__() : 객체가 생성될때 자동으로 실행된다.
def __init__(self, name, price):
self.name = name
self.price = price
b1 = BlackBox('까망이', 2000000)
print(b1.name, b1.price) # 까망이 2000000
b2 = BlackBox('하양이', 1000000)
print(b2.name, b2.price) # 하양이 1000000
class BlackBox:
# 생성자 함수, __init__() : 객체가 생성될때 자동으로 실행된다.
def __init__(self, name, price):
self.name = name
self.price = price
def set_travel_mode(self, min):
print(f'str(min) + 분 동안 여행 모드 ON')
b1 = BlackBox('까망이", 2000000)
b1.set_travel_mode(20) # 20분 동안 여행 모드 ON
self 는 객체 자신을 의미한다.
메소드를 정의할 때 처음 전달값은 반드시 self여야한다.
메소드 내에서 self.name 과 같은 형태로 멤버변수를 사용한다.
class BlackBox:
# 생성자 함수, __init__() : 객체가 생성될때 자동으로 실행된다.
def __init__(self, name, price):
self.name = name
self.price = price
def set_travel_mode(self, min):
print(f'{self.name} {min} + 분 동안 여행 모드 ON')
b1 = BlackBox('까망이", 2000000)
b1.set_travel_mode(20) # 까망이 20분 동안 여행 모드 ON
BlackBox.set_travel_mode(b1, 20) # 까망이 20분 동안 여행 모드 ON
어떤 클래스에서 사용하는 코드를 물려받고
추가적으로 필요한 내용을 확장한다.
class BlackBox: # 부모 클래스
# 생성자 함수, __init__() : 객체가 생성될때 자동으로 실행된다.
def __init__(self, name, price):
self.name = name
self.price = price
class TravelBlackBox(BlackBox): 자식 클래스
def set_travel_mode(self, min):
print(f'{self.name} {min} + 분 동안 여행 모드 ON')
b1 = BlackBox('까망이', 200000)
b2 = TravelBlackBox('하양이', 100000)
b1.set_travel_mode(20) # 사용 불가
b2.set_travel_mode(10)
자식 클래스의 멤버변수를 확장하려면 다음과 같이 작성하면 된다.
class BlackBox: # 부모 클래스
# 생성자 함수, __init__() : 객체가 생성될때 자동으로 실행된다.
def __init__(self, name, price):
self.name = name
self.price = price
class TravelBlackBox(BlackBox): 자식 클래스
def __init__(self, name, price, sd)
BlackBox.__init__(self, name, price)
self.sd = sd
def set_travel_mode(self, min):
print(f'{self.name} {min} + 분 동안 여행 모드 ON')
super 를 사용하면 다음과 같이 사용할 수도 있다.
class TravelBlackBox(BlackBox): 자식 클래스
def __init__(self, name, price, sd)
super().__init__(name, price) # super 사용
self.sd = sd
def set_travel_mode(self, min):
print(f'{self.name} {min} + 분 동안 여행 모드 ON')
파이썬은 다중 상속을 지원한다.
콤마를 사용하여 다중 상속이 가능하다
class BlackBox: # 부모 클래스
def __init__(self, name, price):
self.name = name
self.price = price
class VideoMaker:
def make(self):
print("비디오 생성")
class TravelBlackBox(BlackBox, VideoMaker):
def __init__(self, name, price, sd):
super().__init__(name, price)
self.sd = sd
def set_travel_mode(self, min):
print(f'{self.name} {min}분 동안 여행 모드 ON')
b1 = TravelBlackBox("하양이", 100, 30)
b1.make() # 비디오 생성
자식 클래스에서 같은 메소드를 새로 정의하지 않으면 부모클래스의 메소드를 사용하고
같은 메소드를 새로 정의하면 자식 클래스의 메소드를 사용하는 것을 말한다.
...
class AdvancedTravelBlackBox(TravelBlackBox):
def set_travel_mode(self, min):
print(f'{self.name} {min}분 동안 여행 모드 ON')
self.make()
self.send()