# 객체 지향
( 개인 정리 용입니다. )
class, object
quardrangle 클래스
instance = class()
Class에는 속성과 메서드가 있음
추상화 (abstraction) : 여러 클래스에 중복되는 속성, 메서드를 하나의 기본 클래스로 작성
상속 (inheritance) : 기본 클래스의 공통 기능을 물려받고, 다른 부분만 추가 or 변경하는 것
코드 재사용이 가능, 공통 기능의 경우 기본 클래스 코드만 수정하면 된다는 장점
부모 클래스가 둘 이상인 경우는 다중 상속 이라고 부름
class Car:
def __init__(self, name):
self.name = name
def get_info(self):
print(self.name)
class ElectronicCar(Car):
def get_info(self):
print(self.name , " Electronic")
class GasolineCar(Car):
def get_info(self):
print(self.name , " Gasoline")
test_car = ElectronicCar("pingping")
hello_car = GasolineCar("pingping")
test_car.get_info()
hello_car.get_info()
메서드 오버라이드 : 덮어씌우기, 기존 기능이 새로운 기능으로 재정의
issubclass, isinstance → 내장 함수
init : 생성자
super
자식 클래스에서 부모 클래스의 method를 호출할 때 사용
super().부모 클래스명의 method명
class Person:
def work(self):
print('work hard')
class Student(Person):
def work(self):
print('Study Hard')
def parttime(self):
super().work()
클래스 변수 : 클래스 정의에서 메서드 밖에 존재하는 변수
인스턴스 변수 : 클래스 정의에서 메서드 안에서 사용되면서 'self.변수명'처럼 사용되는 변수
클래스 변수, 생성자, 인스턴스 변수, 클래스 변수 접근, 인스턴스 변수 접근, ....
class Figure:
# 생성자 (Initializer)
def __init__(self, width, height):
self.width = width
self.height = height
# 메서드
def clac_area(self):
return self.width * self.height
# 정적 메서드 (Figure 에 너비와 높이가 같은 도형은 정사각형임을 알려주는 기능)
@staticmethod
def is_square(rect_width, rect_height):
if rect_width == rect_height:
print("square")
else:
print('Not square')
figure1 = Figure(2, 3)
figure1.is_square(5, 5)
Figure.is_square(4, 2)
class Figure:
# 생성자 (Initializer)
def __init__(self, width, height):
self.width = width
self.height = height
# 메서드
def clac_area(self):
return self.width * self.height
# 클래스 메서드
@classmethod
def print_count(cls):
return cls.count
class Figure:
@classmethod
def set_name(cls, name):
cls.name = name
class Circle(Figure):
pass
# 범위가 classmechod는 해당 클래스 안이다. 그래서 Circle set_name을 호출하면 바뀌지 않음
# staticmethod : 아예 별개의 함수
# classmethod : 해당 클래스만을 범위로 한다.
Figure.set_name('Figure')
print(Figure.name, Circle.name)
Circle.set_name('Circle')
print(Figure.name, Circle.name)