[Python] 클래스

Narcoker·2023년 3월 28일
0

Python

목록 보기
8/13

✏️클래스

기초

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여야한다.
메소드 내에서 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)

super

자식 클래스의 멤버변수를 확장하려면 다음과 같이 작성하면 된다.

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() 
profile
열정, 끈기, 집념의 Frontend Developer

0개의 댓글