import os.path
import csv

class BaseCar:
	def __init__(self, car_type, photo_file_name):
		self.car_type = car_type
		self.photo_file_name = photo_file_name



	def get_photo_file_ext(self):
		return os.path.splitext(self.photo_file_name)[1].strip('.')
		



class Car(BaseCar):
	def __init__(self, car_type, brand, passenger_seats_count, photo_file_name, carrying):
		super().__init__(car_type, photo_file_name)
		self.brand = brand
		self.carrying = carrying
		self.passenger_seats_count = passenger_seats_count





class Truck(BaseCar):
	def __init__(self, car_type, brand, photo_file_name, carrying, body_whl):
		super().__init__(car_type, photo_file_name)
		self.brand = brand
		self.carrying = carrying
		self.body_whl = body_whl
		self.body_width = float(body_whl.split('x')[0]) or 0
		self.body_height = float(body_whl.split('x')[1]) or 0
		self.body_length = float(body_whl.split('x')[2]) or 0

	def get_body_volume(self):
		return "volume: {} cubic meters".format(self.body_length * self.body_width * self.body_height)

class SpecMachine(BaseCar):
	def __init__(self, car_type, brand, photo_file_name, carrying, extra):
		super().__init__(car_type, photo_file_name)
		self.brand = brand
		self.carrying = carrying
		self.extra = extra




def get_car_list(filename):
	result = []
	with open(filename, newline='') as csvfile:
		content = csv.reader(csvfile)
		next(content)

		for line in content:
			try:
				arguments = line[0].split(';')
				if len(arguments) == 7: # proper string contains 7 elenets
					car_type, brand, passenger_seats_count, photo_file_name, body_whl, carrying, extra = arguments
					if arguments[0] == 'car':
						result.append(Car(car_type, passenger_seats_count, photo_file_name, carrying, car_type))
					elif arguments[0] == 'truck':
						result.append(Truck(car_type, brand, photo_file_name, body_whl, carrying))
					elif arguments[0] == 'spec_machine':
						result.append(SpecMachine(car_type, brand, photo_file_name, carrying, extra))
			except IndexError:
				print('Something goes wrong')
			
		return result


print(get_car_list('cars.csv'))