자동차 class 예시
기본형태
class Car(object):
def__init__(self):
pass
def my_sum(a,b):
pass
print(my_sum(10,20)
class Car(object):
def __init__(self, car_number, car_price, car_speed):
self.car_number = car_number
self.car_price = car_price
self.car_speed = car_speed
car1 = Car('123',1000,0)
car2 = Car('456',2000,20)
class Car(object):
def __init__(self, car_number, car_price, car_speed):
self.car_number = car_number
self.car_price = car_price
self.car_speed = car_speed
def go_front(self):
self.car_speed += 10
car1 = Car('123',1000,0)
car2 = Car('456',2000,20)
print(car1.car_number)
car1.go_front()
print(car1.car_speed)
class를 조금 다른 각도에서 생각해 보자!
- calss는 객체 모델링의 수단
- 여러 데이터 타입을 묶어서 하나의 새로운 데이터 타입으로 볼 수 있음
- ADT(Abstract Data Type) 추상 데이터 타입
- instance를 만들어내는 수단
class Car(object):
def __init__(self, car_number, car_price, car_speed):
self.car_number = car_number
self.car_price = car_price
self.car_speed = car_speed
def __str_-(self):
return self.car_number
car1 = Car('123', 1000, 0)
print(car1)
class 안에서
- instance variable과 class variable
- property는 instance variable과 class variable로 구분됨!
- instance variable은 instance마다 각자 따로 가지고 있는 property를 지칭
class Car(object):
is_speeding = 120
def __init__(self, car_number, car_price, car_speed):
self.car_number = car_number
self.car_price = car_price
self.car_speed = car_speed
def __str_-(self):
return self.car_number
car1 = Car('123',1000,0)
car2 = Car('456',2000,20)
print(Car.is_speeding)
print(car1.is_speeding)
print(car2.is_speeding)
class Car(object):
is_speeding = 120
def __init__(self, car_number, car_price, car_speed):
self.car_number = car_number
self.car_price = car_price
self.car_speed = car_speed
def __str_-(self):
return self.car_number
def find_speeding(self):
if self.car_speed > Car.is_speeding:
return '과속입니다'
else:
return '정상속도입니다!'
car1 = Car('123',1000,0)
car2 = Car('456',2000,0)
print(Car.is_speeding)
print(car1.is_speeding)
print(car2.is_speeding)
print(car1.find_speeding)
Car.is_speeding = 100
print(Car.is_speeding)
print(car1.is_speeding)
car1.is_speeding = 100
print(Car.is_speeding)
- Python은 만약 instance variable이 없으면 생성함! 즉 예제의 car1의 instance안에 is_speeding이라는 변수를 생성!
상속 !?
- 객체지향의 특징중 하나!
- 한 class의 특징을 이어받아 다른 class를 확장해서 생성하는 기법
- python의 모든 class는 상속관계에 있다!
- A class --> B class
- A class
- Parent class (부모 class)
- Upeer class (상위 class)
- Super class
- B class
- child class (자식 class)
- 하위 class
- Sub class
- 상속 관계가 성립하면 두개의 class간에 특별한 관계가 성립!
- Is-A relationship (IS-A관계)
- 즉 Sub class is a Superclass가 성립
- 이말인 즉슨 사람 = 포유류 (O) sub / supper
- 포유류 = 사람 (X) super / sub
- class의 활용을 높이기 위해 상속을 이용함!
- 사용자가 만드는 모든 class는 object라는 이름의 class를 상속하고 있음!
Unit class로 예시를 들어보겠다.
class Unit(object):
def __init__(self,life):
self.life = life
def show_status(self):
print("생명력 : {}".format(self.life))
unit1 = Unit(100)
unit1.show_status
class Marine(object):
def __init__(self,life):
self.life = life
self.damage = damage
def show_status(self):
print("생명력 : {}".format(self.life))
print("생명력 : {}".format(self.damage))
marine1 = Marine(200)
marine1.show_status()
class Unit(object):
def __init__(self,life):
self.life = life
def show_status(self):
print("생명력 : {}".format(self.life))
unit1 = Unit(100)
unit1.show_status
class Marine(Unit):
def __init__(self,life):
super(Marine, self).__init__(life)
self.damage = damage
def show_status(self):
super(Marine, self).show_status()
print("생명력 : {}".format(self.damage))
marine1 = Marine(100,200)
marine1.show_status()
Module
Module : 함수나 변수, class를 모아 놓은 파일을 지칭! (확장자가 .py로 끝나는)
그럼 왜 이렇게 module을 만드나 ? => 다른 파일에서 사용하기 위해!
모듈을 이용하기 위해서는 몇가지 방법이 존재!
- 가장 쉬운 방법 --> 특정 폴더를 module 폴더로 지정, 그 안에 python module(파일)을 생성
- module은 내가 만들 수도 있고 다른사람이 만든 모듈을 사용할 수도 있음
- module을 불러들여 보자!
- module을 불러 들이기 위해 import라는 keyword를 사용
import my_module
print(my_module.my_var)
print(my_module.my_func(10,20)
import my_module as m
print(m.my_var)
print(m.my_func(10,20)
- from ~ import : 모듈 안에서 변수값만 가져다 쓰겠다는 의미
from my_module import my_var
print(my_var)
import folderA.folderB.module2
print(folderA.folderB.module2.module2_var)
import folderA.folderB.module2 as m2
print(m2.module2_var)
from folderA.folderB import module2
print(module2.module2_var)