class car:
	name = "None"
	weight = 1000
	speed = 200

	#__init__ нужен, чтобы сразу задать объекту нужные параметры
	#Инициализация при создании
	def __init__(self, name, weight, speed):
		self.name = name
		self.weight = weight
		self.speed = speed
		print(f"{self.name} едет со скоростью {self.speed}")

	#self необходим для того, Чтобы отличать методы от функций, которые не привязаны к какому-то классу/объекту,
	#поддерживать полиморфизм. Self - это что-то типа параметра метода.
	def set(self, name, weight, speed):
		self.name = name
		self.weight = weight
		self.speed = speed

#Класс наследник создаётся так:
class truck(car):
	wheels = 8
	def __init__(self):
		pass


man = truck()
man.wheels = 12
print(man.wheels)
#классы - наследники имеют доступ к методам из оригинального класса
man.set(weight = 10000, name = "Man", speed = 200)

Audi = car("Audi", 2000, 320)
Audi.set(weight = 2000, name = "Audi", speed = 320)
print(Audi.name)

Shkoda = car("Shkoda", 1800, 235)
Shkoda.set(weight = 1800, name = "Shkoda", speed = 235)
print (Shkoda.name)
