IT/Python

클래스와 인스턴스

우루사이 2023. 10. 30. 23:08

클래스

  • 형식을 정의
  • 속성과 데이터를 변형하는 함수를 같은 namespace 에 묶음

인스턴스

  • 클래스를 복사해서 생성한 복사본

객체지향 프로그래밍의 특징

  • 추상성: 꼭 필요한 부분만 구현
  • 상속성: 부모 클래스에서 공통부분을 상속 받음
  • 다형성
    • 동일한 인터페이스에 대해 구체적인 인스턴스마다 다른 동작을 할 수도 있음
    • 상속받은 메소드의 바디를 덮어쓰기
    • Overrride

클래스 정의

class 클래스명(상위클래스):
    """
    클래스에 대한 설명
    """
    def 함수명(self, 인자1, 인자2, ...):
    	statement
        ...
        return

인스턴스 객체 멤버 변수 이름 해석 순서

  1. 인스턴스 객체 내부
  2. 클래스 객체 내부
  3. 전역 공간

클래스에 새로운 멤버 변수 추가 방법

class_name.맴버변수명 = "초기값"

인스턴스 객체에 동적으로 멤버 변수 추가 방법

instance_name.맴버변수명 = "입력값"
  • 클래스에 멤버 변수 추가와 다르게, 추가된 인스턴스에서만 접근 가능

상속

class Person:
	...
    
class Customer(Person):
	def __int__(self, name, phoneNumber, product, ID):
    	# 부모 클래스의 생성자 호출
    	Person.__init__(self, name, phoneNumber)
        
        self.product = product
        self.ID = ID

다중 상속

  • 2개 이상의 부모 클래스를 상속
  • 이름 충돌(name conflict) 해결
    • 상속 받은 매소드명이 동일할 경우, 먼저 상속된 것으로 처리
class 클래스(부모1, 부모2):
	def 매소드(self):
    	...
    
    def 매소드(self):
    	...
        
인스턴스 = 클래스()
인스턴스.매소드() # = 부모1's 매소드 적용