19Май

Авто класс с: ТрансТехСервис (ТТС): автосалоны в Казани, Ижевске, Чебоксарах и в других городах

Содержание

Автокласс-Эксперт — проверенные автомобили с пробегом

Автокласс Эксперт — №1 по продажам автомобилей с пробегом в Тульском регионе*

*По данным Союза «Тульская торгово-промышленная палата»

Юридическая чистота

Сделка за 1 день

Честные условия

Сертифицированные автомобили


Автомобили с пробегом в Туле

Новые поступления

Mazda CX-5 2016

112 084 км

Бензин, 2 л, 150 л.с. Автоматическая Передний Внедорожник

1 609 000 ₽

1 709 000 ₽

Черный

BMW 5 серии 2020

20 070 км

Дизель, 2 л, 190 л. с. Автоматическая Полный Седан

3 759 000 ₽

4 459 000 ₽

BMW X1 2019

99 412 км

Дизель, 2 л, 150 л.с. Автоматическая Полный Внедорожник

2 549 000 ₽

2 999 000 ₽

Красный

LADA (ВАЗ) 2121 (4×4) 2015

28 767 км

Бензин, 1.

7 л, 83 л.с. Механическая Полный Внедорожник

439 000 ₽

539 000 ₽

Красный

Peugeot 107 2011

82 766 км

Бензин, 1 л, 68 л.с. Механическая Передний —

279 000 ₽

399 000 ₽

BMW X1 2018

62 537 км

Бензин, 2 л, 192 л. с. Автоматическая Полный Внедорожник

2 749 000 ₽

3 299 000 ₽

Оранжевый

Renault Duster 2021

35 210 км

Бензин, 1.3 л, 150 л.с. Автомат вариатор Полный Внедорожник

1 849 000 ₽

1 989 000 ₽

Серебряный

Hyundai Santa Fe 2021

33 485 км

Дизель, 2. 2 л, 199 л.с. Автомат робот Полный Внедорожник

3 609 000 ₽

3 859 000 ₽

Kia Sportage 2019

54 963 км

Бензин, 2.4 л, 184 л.с. Автоматическая Полный Внедорожник

2 279 000 ₽

2 429 000 ₽

Черный

BMW 5 серии 2016

158 061 км

Бензин, 2 л, 184 л.

с. Автоматическая Задний Седан

1 709 000 ₽

1 849 000 ₽

Mazda CX-5 2016

112 084 км

Бензин, 2 л, 150 л.с. Автоматическая Передний Внедорожник

1 609 000 ₽

1 709 000 ₽

Черный

BMW 5 серии 2020

20 070 км

Дизель, 2 л, 190 л. с. Автоматическая Полный Седан

3 759 000 ₽

4 459 000 ₽

BMW X1 2019

99 412 км

Дизель, 2 л, 150 л.с. Автоматическая Полный Внедорожник

2 549 000 ₽

2 999 000 ₽

Красный

LADA (ВАЗ) 2121 (4×4) 2015

28 767 км

Бензин, 1. 7 л, 83 л.с. Механическая Полный Внедорожник

439 000 ₽

539 000 ₽

Красный

Peugeot 107 2011

82 766 км

Бензин, 1 л, 68 л.с. Механическая Передний —

279 000 ₽

399 000 ₽

BMW X1 2018

62 537 км

Бензин, 2 л, 192 л. с. Автоматическая Полный Внедорожник

2 749 000 ₽

3 299 000 ₽

Оранжевый

Renault Duster 2021

35 210 км

Бензин, 1.3 л, 150 л.с. Автомат вариатор Полный Внедорожник

1 849 000 ₽

1 989 000 ₽

Серебряный

Hyundai Santa Fe 2021

33 485 км

Дизель, 2. 2 л, 199 л.с. Автомат робот Полный Внедорожник

3 609 000 ₽

3 859 000 ₽

Kia Sportage 2019

54 963 км

Бензин, 2.4 л, 184 л.с. Автоматическая Полный Внедорожник

2 279 000 ₽

2 429 000 ₽

Черный

BMW 5 серии 2016

158 061 км

Бензин, 2 л, 184 л. с. Автоматическая Задний Седан

1 709 000 ₽

1 849 000 ₽

Подборки

Спецпредложения

Эксперт рекомендует


Автомобили в Туле

Компания «Автокласс-Эксперт» предлагает купить легковые автомобили с пробегом от ведущих мировых производителей. В каталоге можно подобрать подержанные иномарки в отличном состоянии по выгодным ценам. Все машины, представленные на нашем сайте, проходят техническую проверку, поэтому вы можете быть уверены в том, что получите лучший вариант за свои деньги. На сайте есть опция сравнения разных марок и моделей автомобилей. Читать подробно…

Причины купить авто с пробегом в Автоклассе

Приобретение подержанной машины имеет много плюсов. Покупка б/у авто даже рекомендована тем, кто только учится водить или же будет использовать транспортное средство для работы.

Плюсы приобретения иномарки с пробегом:

  • Выгодная цена на автомобили. Купить машину б/у можно в два-три раза дешевле, чем новую. При этом внешний вид и техническое состояние ТС почти не отличается от моделей из салона.
  • Экономичный ремонт. Запчасти на такие авто более доступны по стоимости и работы по техническому обслуживанию и ремонту стоят ниже, чем в специализированных сервисных центрах.

Важно!
Покупать авто, на котором уже ездили, нужно у проверенных компаний. Приобретение машины в компании «Автокласс-Эксперт» — это гарантия проверки документов на ТС, а также исправности основных агрегатов и систем.

Как выбрать и купить иномарку с пробегом

При подборе подержанного транспортного средства нужно выбирать модели не старше 10 лет выпуска. Автомобили старше 10 лет могут быть достаточно изношены, их состояние не всегда удовлетворительно – из-за активной эксплуатации на отечественных дорогах.

Выбор машины на нашем сайте можно сделать самостоятельно или же обратиться за советом к нашему консультанту. У специалиста также можно узнать, как получить скидку на приобретение иномарки. Или оформить кредит на покупку транспортного средства.

Получить консультацию

Оставьте номер телефона, мы перезвоним Вам в течение 2-х минут

Самые популярные автомобили С-класса. ТОП-10 моделей – Автоцентр.ua

Автоцентр Автоправо Автобизнес Самые популярные автомобили С-класса. ТОП-10 моделей

Марка

Модель

Оставьте ваши контактные данные:

По телефону

На почту

Уточните удобное время для звонка:

День/дата

  • День/дата
  • Сегодня
  • Завтра
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

Часы

  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

Минуты

  • 10
  • 20
  • 30
  • 40
  • 50

Отправляя заявку я предоставляю свое согласие на сбор и обработку предоставленных мною личных персональных данных в соответствии с Законом Украины «О защите персональных данных»

Оставьте ваши контактные данные:

Уточните удобное время для звонка:

День/дата

  • День/дата
  • Сегодня
  • Завтра
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

Часы

  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

Минуты

  • 10
  • 20
  • 30
  • 40
  • 50

Прямо сейчас

Отправляя заявку я предоставляю свое согласие на сбор и обработку предоставленных мною личных персональных данных в соответствии с Законом Украины «О защите персональных данных»

Оставьте ваши контактные данные:

Выберите машину:

Марка

  • Сначала выберите дилера

Модель

  • Сначала выберите марку

Отправляя заявку я предоставляю свое согласие на сбор и обработку предоставленных мною личных персональных данных в соответствии с Законом Украины «О защите персональных данных»

Sample Text

Оставьте ваши контактные данные:

Выберите машину:

Марка

  • Сначала выберите дилера

Модель

  • Сначала выберите марку

Уточните удобное время для тест-драйва:

День/дата

  • День/дата
  • Сегодня
  • Завтра
  • 22 марта
  • 23 марта
  • 24 марта
  • 25 марта
  • 26 марта
  • 27 марта
  • 28 марта
  • 29 марта
  • 30 марта
  • 31 марта
  • 01 апреля
  • 02 апреля
  • 03 апреля

Часы

  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

Минуты

  • 00
  • 10
  • 20
  • 30
  • 40
  • 50

Отправляя заявку я предоставляю свое согласие на сбор и обработку предоставленных мною личных персональных данных в соответствии с Законом Украины «О защите персональных данных»

X

Оберіть мовну версію сайту. За замовчуванням autocentre.ua відображається українською мовою.

Слава Україні! Героям слава!
Ви будете перенаправлені на українську версію сайту через 10 секунд

Автомобильные степени, сертификаты и курсы

Automotive Technology

Advanced Engine Performance Chassis​ Service  Option
Drive Train Service Engine Performance & Electrical
Обслуживание двигателя  Опция Автомобильная бизнес -технология
Техник электромобилей
Альтернативный FUEL ​Автомобильные курсы

Эти занятия предлагаются каждый семестр в дневной и вечерней чередовании. Начальная заработная плата варьируется от 15 до 20 долларов в час. Опытные механики могут зарабатывать более 50 000 долларов в год. Возможна полная и частичная занятость.

​Автомобильные технологии 101A 
Автомобильная механическая эксплуатация
Единицы: 3.0 Классные часы: 54 лекционных часа.
Этот курс будет посвящен функционированию, эксплуатации и конструкции механических аспектов современных автомобилей. Будут рассмотрены ремонт двигателя, механические и автоматические коробки передач, тормоза, работа и конструкция подвески. Курс предназначен для студентов, которым нужны общие знания об автомобильных механических системах и работа в нетехнической сфере.

Автомобильные технологии 101B
Автомобильная электротехника
Единицы: 3.0 Классные часы: 54 лекционных часа.
Этот курс будет посвящен функционированию и эксплуатации электрических компонентов современных автомобилей. Будут рассмотрены теория и применение электротехники, датчики двигателя, компьютерные системы и устройства контроля выбросов. Также будут проверены кондиционер, отопление и электрические аксессуары. Этот курс предназначен для студентов, которые ищут общие знания в области автомобилестроения и работу в нетехнической области, связанной с автомобилестроением.

Автомобильные технологии 102
Введение в автомобилестроение
Единицы: 3.0 Классные часы: 45 лекций / 27 лабораторных часов.
Знакомство с основными автомобильными системами, используемыми в современных автомобилях. Особое внимание уделяется теории, номенклатуре деталей и описанию работы системы. Этот курс предназначен для студентов, которым нужны технические знания, практическая лабораторная работа и будущее трудоустройство в качестве специалиста по обслуживанию автомобилей.

Автомобильные технологии 111
Ремонт двигателя
Единица(ы): 5.0 Часов занятий: 72 лекции / 72 лабораторных часа.
Этот курс посвящен разборке, сборке, диагностике и ремонту бензиновых автомобильных двигателей. Выделено точное измерение двигателя. Особое внимание уделяется практической отработке навыков ремонта двигателя. Студенты должны предоставить утвержденные защитные очки. Этот курс помогает учащимся подготовиться к сертификационному экзамену A1 (ремонт двигателя) ASE. Могут понадобиться деловые поездки.

Автомобильные технологии 112
Автоматические трансмиссии и мосты
Единицы: 4,5 Часы занятий: 54 лекции / 90 лабораторных часов.
Этот курс охватывает теорию, эксплуатацию, диагностику и процедуры обслуживания автоматических коробок передач и трансмиссий. Особое внимание уделяется гидравлическим системам, а также изучению электронного управления и бесступенчатой ​​трансмиссии (CVT). Особое внимание уделяется практическим процедурам тестирования и обслуживания. Студенты должны предоставить утвержденные защитные очки. Этот курс помогает учащимся подготовиться к сертификационному экзамену A2 (автоматическая трансмиссия/коробки передач) ASE. Могут потребоваться выезды на места​

Автомобильные технологии 113
Механическая трансмиссия и оси
Единицы: 4,5 часа занятий: 54 лекции / 90 лабораторных часов.
Этот курс охватывает теорию, эксплуатацию, диагностику и обслуживание механических коробок передач, трансмиссий, сцеплений, карданных валов и дифференциалов. Этот курс также охватывает полноприводные и полноприводные системы. Особое внимание уделяется безопасным и правильным практическим процедурам. Студенты должны предоставить утвержденные защитные очки. Этот курс помогает учащимся подготовиться к сертификационному экзамену ASE A3 (механический привод). Могут понадобиться деловые поездки.

Автомобильные технологии 114
Подвеска и рулевое управление
Единицы: 4,5 Классные часы: 54 лекции / 90 лабораторных часов.
Этот курс охватывает теорию, эксплуатацию, диагностику и обслуживание систем рулевого управления и подвески, используемых в современных автомобилях. Развал-схождение колес, шины, системы контроля давления в шинах и электронные компоненты подвески/рулевого управления включены. Особое внимание уделяется практической работе. Студенты должны предоставить утвержденные защитные очки. Этот курс помогает учащимся подготовиться к сертификационному экзамену A4 (рулевое управление и подвеска) ASE. Могут понадобиться деловые поездки.

Автомобильные технологии 114A
Подвеска и рулевое управление Лекция
Единицы: 3.0 Класс Часы: 54 Лабораторные часы
Этот курс охватывает теорию, эксплуатацию, диагностику и обслуживание систем рулевого управления и подвески, используемых в современных автомобилях. Развал-схождение колес, шины, системы контроля давления в шинах и электронные компоненты подвески/рулевого управления включены. Этот курс помогает учащимся подготовиться к сертификационному экзамену A4 (рулевое управление и подвеска) ASE. Могут потребоваться выезды на места.​

Автомобильные технологии 114B
Подвеска и рулевое управление Лекция
Единицы: 1,5 Класс Часы: 90 Лабораторные часы
Этот курс охватывает эксплуатацию, диагностику и обслуживание систем рулевого управления и подвески, используемых в современных автомобилях. Развал-схождение колес, шины, системы контроля давления в шинах и электронные компоненты подвески/рулевого управления включены. Особое внимание уделяется практической работе. Студенты должны предоставить утвержденные защитные очки. Этот курс помогает учащимся подготовиться к сертификационному экзамену A4 (рулевое управление и подвеска) ASE.

Автомобильные технологии 115
Тормоза
Блок(и): 4.5 Класс Часы: 54 Лекционных / 90 Лабораторных часов
​Этот курс будет охватывать теорию работы, диагностику и обслуживание барабанных, дисковых и антиблокировочных тормозных систем используется на современных автомобилях. Акцент делается на безопасных и правильных практических занятиях. Студенты должны предоставить утвержденные защитные очки. Этот курс помогает учащимся подготовиться к сертификационному экзамену A5 (тормоза) ASE. Могут потребоваться выезды на места.​

Automotive Technology 115A
Тормоза Лекция
Единиц: 3.0 Часов занятий: 54 Лекция
​В этом курсе рассматриваются теория работы, диагностика и функции барабанных, дисковых и антиблокировочных тормозных систем, используемых в современных автомобилях. Этот курс помогает учащимся подготовиться к сертификационному экзамену A5 (тормоза) ASE. Могут понадобиться деловые поездки.

Автомобильные технологии 115B
Тормоза Лекция
Единицы: 1,5 Класс Часы: 90 Лаборатория
Этот курс охватывает эксплуатацию, диагностику и обслуживание барабанных, дисковых и антиблокировочных тормозных систем, используемых в современных автомобилях. Акцент делается на безопасных и правильных практических занятиях. Студенты должны предоставить утвержденные защитные очки. Этот курс помогает учащимся подготовиться к сертификационному экзамену A5 (тормоза) ASE.​

Автомобильные технологии 116
Основы электротехники
Единицы: 5.0 Классные часы: 72 лекции / 72 лабораторных часа.
Введение в основные принципы работы электрических и электронных устройств, используемых в современных автомобилях. Особое внимание уделяется практическому тестированию цифрового мультиметра. Особое внимание будет уделяться безопасному и правильному использованию инструментов и оборудования учащимися. Курс также будет включать закон Ома, тестирование цепей, электромагнетизм, аккумуляторы, стартеры и генераторы переменного тока. Студенты должны предоставить утвержденные защитные очки. Этот курс помогает учащимся подготовиться к сертификационному экзамену A6 (Электротехника/Электроника) ASE. Могут понадобиться деловые поездки.

Автомобильные технологии 117
Отопление и кондиционирование воздуха
Единицы: 5.0 Классные часы: 72 лекции / 72 лабораторных часа.
Этот курс будет охватывать эксплуатацию и обслуживание современных автомобильных систем кондиционирования воздуха. Представлено практическое применение теории кондиционирования воздуха для решения проблем. Также включены системы отопления, вентиляции и электронного управления. Особое внимание уделяется безопасным практическим занятиям. Студенты должны предоставить утвержденные защитные очки. Этот курс помогает учащимся подготовиться к сертификационному экзамену A7 (кондиционирование и отопление) ASE. Агентство по охране окружающей среды 609Сертификация интегрирована в этот курс. Могут понадобиться деловые поездки.

Автомобильные технологии 118
Характеристики двигателя
Единицы: 5.0 Классные часы: 72 лекции / 72 лабораторных часа.
Этот курс будет охватывать процедуры работы двигателя, включая топливо, зажигание, осциллограф, контроль выбросов и компьютерные системы, используемые в современных автомобилях. Особое внимание уделяется практическому тестированию и диагностике. Этот курс помогает учащимся подготовиться к сертификационному экзамену ASE A8 (производительность двигателя). Студенты должны предоставить утвержденные защитные очки. Могут потребоваться выезды на места

Автомобильные технологии 119
Дизельные двигатели для легковых автомобилей
Единицы: 3,0 Классные часы: 45 лекций / 27 лабораторных часов.
Этот курс знакомит с применением современных дизельных двигателей малой и средней мощности. Будут рассмотрены американские и немецкие системы двигателей, включая систему впрыска топлива Common Rail, турбонагнетатели и системы выхлопа дизельных двигателей. Могут потребоваться выезды на места.​​

Автомобильные технологии 185
Базовый автомобильный курс чистого воздуха
Единиц: 5.0 Класс часов: 90 Всего лекций.
Это сертифицированный Бюро автомобильного ремонта (B.A.R.) базовый курс чистого воздуха для автомобилей. Этот курс выполняет одно из требований для сдачи государственного экзамена на специалиста по смогу. Оценка: только зачет/не зачет. ХСС

Автомобильные технологии 186
Продвинутый автомобильный курс чистого воздуха
Единиц: 2.0 Класс часов: 36 Всего лекций.
Это сертифицированный Бюро автомобильного ремонта (B.A.R.) продвинутый курс по чистке воздуха для автомобилей. Этот курс выполняет одно из требований для сдачи государственного экзамена на специалиста по смогу. Оценка: только зачет/не зачет. ХСС

Автомобильные технологии 187
BAR Специальная диагностика и ремонт
Единиц: 5.0 Класс часов: 90 Всего лекций.
Бюро автомобильного ремонта признал курс диагностики и ремонта. Этот курс выполняет один из обязательных курсов, необходимых студенту для сдачи государственного экзамена на специалиста по смогу. Оценка: только зачет/не зачет. ХСС

Автомобильные технологии 190
Автомобилестроение В зависимости от производителя I
Единицы: 2.0 Классные часы: 27 лекций / 27 лабораторных часов.
Этот курс позволит учащимся получить опыт работы с определенными системами, связанными с двигателем и трансмиссией, от разных производителей автомобилей. Курс предназначен для студентов, ищущих работу в новом автосалоне в качестве техника по обслуживанию. Курс также будет посвящен обучению производителей транспортных средств различных марок. Учащиеся решат сосредоточиться на Subaru, Fiat-Chrysler или других производителях автомобилей.

Автомобильные технологии 191
Автомобильные технологии для конкретного производителя II
Единицы: 3,0 Классные часы: 36 лекций / 54 лабораторных часа.
На этом курсе слушатели приобретут опыт работы и диагностики конкретных трансмиссий и электрических систем различных производителей автомобилей. Этот курс предназначен для студентов, ищущих работу в новом автосалоне в качестве техника по обслуживанию. Курс также будет посвящен обучению производителей транспортных средств различных марок. Студенты решат сосредоточиться на Subaru, Fiat-Chrysler или других производителях автомобилей.​

Автомобильные технологии 216
Электрические системы
Единицы: 5.0 Класс часов: 72 лекции / 72 лабораторных часа.
Теория, работа и диагностика электрических систем кузова автомобиля. Особое внимание уделяется использованию электрических схем с акцентом на электрические аксессуары. Также будут рассмотрены закон Ома и электромагнетизм. Особое внимание уделяется безопасному и правильному использованию инструментов и оборудования в магазине учащимися. Этот курс помогает учащимся подготовиться к сертификационному экзамену A6 (Электротехника/Электроника) ASE. Студенты должны предоставить утвержденные защитные очки. Могут потребоваться выезды на места.​

Автомобильные технологии 260
Знакомство с электромобилями
Единицы: 4.0 Классные часы: 54 лекции / 54 лабораторных часа.
Этот курс посвящен изучению функций, эксплуатации и конструкции электромобилей. Курс также будет посвящен безопасным методам и процедурам при работе с высоковольтными системами. Студенты будут строить специально построенный электромобиль в ходе курса и изучать современных производителей электромобилей. Будут рассмотрены высоковольтные системы, а также конструкции батарей, электродвигатели переменного и постоянного тока и электрические инверторы/преобразователи.

Автомобильные технологии 283
Навыки автомобильной диагностики

Единицы: 3.0 Классные часы: 36 лекций / 54 лабораторных часа
Этот курс охватывает использование автомобильного диагностического оборудования, такого как сканеры, цифровые мультиметры, лабораторные осциллографы и различное испытательное оборудование. Особое внимание будет уделено процедурам испытаний и диагностике. В лабораторных работах потребуются практические приложения. Могут понадобиться деловые поездки.

Автомобильные технологии 284
Automotive Emerging Technologies
Единицы: 3.0 Класс Часы: 54 Лабораторные часы
Этот курс охватывает новые технологии, применяемые в современных автомобилях. Темы будут включать передовые навигационные системы, Wi-Fi на транспортных средствах, умные и подключенные автомобили, системы локальной сети контроллеров (CAN), усовершенствованные системы помощи водителю (ADAS), системы предотвращения столкновений, беспилотные автомобили и системы автопилота. Также будут включены новые системы трансмиссии, такие как двигатели электромобилей и высоковольтные системы, наряду с достижениями в области настройки двигателя и компьютерного программирования.

Автомобильные технологии 285
Гибридные автомобили
Единицы: 3.0 Классные часы: 45 лекций / 27 лабораторных часов
Безопасность, эксплуатация и базовое обслуживание современных гибридных автомобилей. Особое внимание уделяется технике безопасности и специальным средствам для работы с высоким напряжением. Системные функции и компоненты выделены. Представлены электромобили. ХСС

Автомобильные технологии 287
Альтернативные виды топлива
Единицы: 3.0 Классные часы: 45 лекций / 27 лабораторных часов
Этот курс знакомит учащихся с различными типами альтернативных видов топлива, используемых в современных автомобилях. Особое внимание уделяется безопасности и эксплуатации. Особое внимание уделяется обучению работе со сжатым природным газом (СПГ). Также покрываются сжиженный нефтяной газ, сжиженный природный газ, биодизель, этанол и водород. Этот курс готовит студентов, изучающих автомобилестроение и дизельное топливо, к работе в промышленности. CSU

Automotive Technology 299
Кооперативная работа в автомобилестроении
Единица(ы): 1.0 — 4.0
Этот курс стажировки под наблюдением помогает учащимся приобрести желаемые рабочие привычки, взгляды и навыки в области автомобильного механического ремонта. Студент может заработать от 1 до 4 единиц за семестр, всего до 16 единиц. Кроме того, студенты должны отработать 75 оплачиваемых часов или 60 неоплачиваемых часов за единицу заработанного. Студенческое повторение разрешено в соответствии с Разделом 5, Разделом 55253.

автокласс

Написать компактные классы Python

autoclass теперь полностью совместим с pyfields ! Узнайте, как создавать очень компактные классы здесь

autoclass предоставляет инструменты для автоматического создания кода классов Python. Задача этой библиотеки — уменьшить количество избыточности за счет автоматической генерации частей кода из информации, уже доступной где-то еще (в сигнатуре конструктора или в 9Например, 0300 pyfields поля). Он состоит из нескольких независимых элементов, которые можно комбинировать:

  • с @autoargs вам не нужно писать self.xxx = xxx в вашем конструкторе
  • с @autoprops все или часть ваших аргументов конструктора становятся свойствами и их установщик аннотируется теми же подсказками типа PEP484 и методами проверки значений
  • с @autohash , ваш объект хэшируется на основе кортежа всех полей (поэтому его можно использовать как ключ словаря или поместить в набор)
  • с @autodict , ваш объект ведет себя как словарь, сопоставим со словарями и получает строковое представление
  • с @autorepr , ваш объект получает строковое представление (используйте либо это, либо @autodict , а не оба одновременно)
  • с @autoclass , вы получаете все вышеперечисленное сразу (но вы все равно можете отключить некоторые из них)

Цель аналогична классам данных attrs и PEP557: удалить шаблонный код. Однако в отличие от них

  • эту библиотеку можно применить к любому классу . Это ничего не меняет в ваших привычках кодирования: вы по-прежнему можете создать конструктор __init__ , а все остальное обеспечивается декораторами.
  • , если информация о полях доступна из другой библиотеки, автокласс может легко использовать ее: например, теперь вы можете использовать pyfields для объявления полей, автокласс будет поддерживать это.
  • все вышеперечисленные декораторы можно использовать независимо, например, если вам просто нужно добавить поведение словаря к существующему классу, вы можете использовать @autodict только .
  • весь созданный код прост и читабелен. Вы можете легко просмотреть сгенерированные функции в режиме отладки, чтобы понять, что происходит
  • .
  • , в отличие от attrs , для полей генерируются сеттеры, поэтому библиотеки проверки, такие как valid8, могут их обернуть. В качестве альтернативы, если вы используете pyfields , он напрямую предоставляет эту функцию.

Другими словами, autoclass просто генерирует тот же самый код, который вы написал бы вручную. По этой причине во многих случаях вы можете без проблем использовать других библиотек поверх результирующих классов. Хорошим примером является то, что вы можете использовать любую библиотеку проверки типов PEP484 по вашему выбору.

Установка

 > автокласс установки pip
 

Вы также можете установить

  • pyfields для создания компактных классов.
  • средство проверки типов на основе PEP484: typeguard, pytypes или force.
  • валидатор значения: valid8 изначально был создан в этом проекте и теперь является независимым.

В качестве альтернативы вы можете использовать PyContracts для одновременной проверки типа и значения, используя @contract , но это не принесет пользы от PEP484 и использует специальный синтаксис. В этой документации также приведены некоторые примеры.

 > pip установить pyfields
> pip установить pytypes
> установка pip действительна8
> pip установить PyContracts
 

1. Основное использование

В следующем коде показано, как определить дом с двумя атрибутами имя и nb_floors :

 из автокласса импортировать автокласс
@автокласс
класс Хаус:
    def __init__(я, имя, nb_floors = 1):
        проходить
 

Вот и все! По умолчанию вы получаете, что конструктор заполняется автоматически, к классу добавляется «словарное» поведение, доступно строковое представление объектов, а объекты сопоставимы (равенство) и хэшируются:

 >>> obj = Дом('мой_дом', 3)
>>> print(obj) # строковое представление
Дом (имя = 'мой_дом', nb_floors = 3)
>>> [att for att in obj.keys()] # поведение словаря
['имя', 'nb_floors']
>>> assert {obj, obj} == {obj} # хэшируемый: может использоваться в наборе или как ключ словаря
>>> assert obj == House('my_house', 3) # сравнение (равенство)
>>> assert obj == {'name': 'my_house', 'nb_floors': 3} # сравнение с dicts
 

Если вы хотите добавить некоторое поведение (пользовательская логика, ведение журнала. ..) при доступе к атрибутам или их установке, вы можете легко переопределить сгенерированные геттеры и сеттеры. Например, ниже мы будем печатать сообщение каждый раз, когда nb_floors установлено:

 из автокласса импорта автокласса, setter_override
@автокласс
класс Хаус:
    def __init__(я, имя, nb_floors = 1):
        проходить
    @setter_override
    определение nb_floors (я, nb_floors = 1):
        print('Установить для nb_floors значение {}'.format(nb_floors))
        self._nb_floors = nb_floors
 

Мы можем проверить это:

 >>> obj = Дом('мой_дом')
Установите nb_floors равным 1
>>> obj.nb_floors = 3
Установите nb_floors равным 3
 

пифилдов комбо

Если вы уже используете pyfields для определения обязательных/необязательных полей с проверкой типа/значения, просто украсьте свой класс @autoclass , и вы получите все вышеперечисленное (представление dict, возможность хэширования, строковое представление, равенство. . .) слишком.

Более того, pyfields теперь предоставляет собственную версию @autoclass , которая имеет более подходящие параметры для пользователей pyfields. Поэтому настоятельно рекомендуется . См. pyfields документация.

Вы можете сделать то же самое вручную, как показано ниже, но рекомендуется использовать тот, что в pyfields :

 из поля импорта pyfields
из автокласса импортировать автокласс
из mini_lambda импорт x
@автокласс
класс Хаус:
    name: str = field(check_type=True, doc="название вашего дома")
    nb_floors: int = поле (по умолчанию = 1, check_type = True, doc="эти nb",
                           валидаторы={
                               «должно быть положительным»: x >= 0,
                               "должно быть кратно 100": x % 100 == 0
                           })
 

Приведенный выше пример работает, потому что за кулисами, если autoclass обнаружит, что ваш класс использует pyfields , он будет автоматически использовать поля, а не подпись конструктора, чтобы получить список полей. Вы можете проверить наличие всех функций:

 >>> obj = Дом('мой_дом', 200)
>>> print(obj) # строковое представление
Дом (имя = 'мой_дом', nb_floors = 200)
>>> [att for att in obj.keys()] # поведение словаря
['имя', 'nb_floors']
>>> assert {obj, obj} == {obj} # хэшируемый: может использоваться в наборе или как ключ словаря
>>> assert obj == House('my_house', 200) # сравнение (равенство)
>>> assert obj == {'name': 'my_house', 'nb_floors': 200} # сравнение с dicts
 

Кроме того, @autoclass теперь предоставляет возможность установить autofields=True для автоматического применения pyfields.autofields перед применением автокласса.

Примечание: все это работает с Python 2.7 и 3.5+. Подробнее см. в документации pyfields .

2. Проверка типа и значения

Если вы не используете pyfields , вам может быть интересно добавить проверку типа и значения в ваши поля с помощью других средств.

a- PEP484 Проверка типа

применять

PEP484 — это стандарт для вставки подсказки типа Python в сигнатуры функций, начиная с Python 3.5 (бэкпорт доступен через независимый модуль typing ). Теперь доступно множество совместимых средств проверки типов, таких как принудительное применение или pytypes.

Если вы украсите свой конструктор класса подсказками типа PEP484, то автокласс обнаружит это и автоматически украсит сгенерированные методы получения и установки свойств. Мы используем принудительно применить средство проверки времени выполнения в этом примере:

 из автокласса импортировать автокласс
из принудительного импорта runtime_validation
@runtime_validation
@автокласс
класс Хаус:
    # конструктор ниже украшен подсказками типа PEP484
    def __init__(self, name: str, nb_floors: int = 1):
        проходить
 

Мы можем проверить это:

 >>> obj = Дом('мой_дом')
>>> obj. nb_floors = 'красный'
применять.исключения.RuntimeTypeError:
  Обнаружены следующие ошибки типа среды выполнения:
       Аргумент 'nb_floors' не имеет типа . Фактический тип был str.
 

Подробности см. в документации Enforce .

py-типов

Ниже приведен тот же пример, но с pytypes вместо применяется :

 из автокласса импортировать автокласс
из pytypes import typechecked
@typechecked
@автокласс
класс Хаус:
    # конструктор ниже украшен подсказками типа PEP484
    def __init__(self, name: str, nb_floors: int = 1):
        проходить
 
Типозащита

ТОДО

b- Проверка простого типа+значения

действительный8

valid8 изначально был создан в этом проекте и теперь является независимым. Он обеспечивает в основном проверку значений, но также и базовую проверку типов. С valid8 , чтобы добавить проверку к любой функции, вы просто украшаете эту функцию @validate_arg , возможно, предоставляя настраиваемые типы ошибок для повышения:

 из импорта valid8 validate_arg
@validate_arg('foo', <функции проверки>, error_type=MyErrorType)
защита my_func(foo):
    . ..
 

Теперь, если вы украсите свой конструктор класса с помощью @validate_arg , то autoclass обнаружит его и также автоматически украсит созданные установщики свойств.

 из автокласса импортировать автокласс
из mini_lambda импортировать s, x, Len
из valid8 импорта validate_arg, InputValidationError
из valid8.validation_lib импортировать instance_of, is_multiple_of
# 2 ошибки пользовательской проверки для valid8
класс InvalidName (InputValidationError):
    help_msg = 'имя должно быть непустой строкой'
класс InvalidSurface (InputValidationError):
    help_msg = 'Поверхность должна быть от 0 до 10000 и быть кратной 100.'
@автокласс
класс Хаус:
    @validate_arg('имя', instance_of(str), Len(s) > 0,
                  error_type = неверное имя)
    @validate_arg('surface', (x >= 0) & (x <10000), is_multiple_of(100),
                  error_type = недопустимая поверхность)
    def __init__(я, имя, поверхность = Нет):
        проходить
 

Мы можем проверить это:

 >>> obj = House('милый дом', 200)
>>> obj. surface = None # Valid (поверхность недоступна по подписи)
>>> obj.name = 12 # Проверка типа
InvalidName: имя должно быть непустой строкой.
>>> obj.surface = 10000 # Проверка значения
InvalidSurface: Surface должен находиться в диапазоне от 0 до 10 000 и быть кратным 100.
 

Подробности см. в документации valid8 . Обратите внимание, что другие библиотеки проверки, основанные на тех же принципах, вероятно, могут легко поддерживаться, пожалуйста, создайте проблему, чтобы предложить некоторые из них!

PyContracts

PyContracts также поддерживается:

 из автокласса импортировать автокласс
из контрактов импортный контракт
@автокласс
класс Хаус:
    @контракт (имя = 'ул [> 0]',
              поверхность='Нет|(целое,>=0,<10000)')
    def __init__(я, имя, поверхность):
        проходить
 

c- PEP484 Проверка типа+значения

Наконец, в реальных приложениях вы можете захотеть объединить как проверку типов PEP484, так и проверку значений. Это работает, как и ожидалось, например, с применять и действительны8 :

 из автокласса импортировать автокласс
# Импорт - для проверки типа
из цифр импорт Интеграл
из принудительного импорта runtime_validation, config
config(dict(mode='covariant')) # проверка типа также будет принимать подклассы
# Импорт - для проверки значения
из mini_lambda импортировать s, x, Len
из valid8 импорта validate_arg, InputValidationError
из импорта valid8.validation_lib is_multiple_of
# 2 ошибки пользовательской проверки для valid8
класс InvalidName (InputValidationError):
    help_msg = 'имя должно быть непустой строкой'
класс InvalidSurface (InputValidationError):
    help_msg = 'Поверхность должна быть от 0 до 10000 и быть кратной 100.'
@runtime_validation
@автокласс
класс Хаус:
    @validate_arg('имя', Len(s) > 0,
                  error_type = неверное имя)
    @validate_arg('surface', (x >= 0) & (x <10000), is_multiple_of(100),
                  error_type = недопустимая поверхность)
    def __init__(self, name: str, surface: Integral=None):
        проходить
 

Мы можем проверить, работает ли проверка:

 >>> obj = House('милый дом', 200)
>>> obj. surface = None # Valid (поверхность недоступна по подписи)
>>> obj.name = 12 # Проверка типа > PEP484
применять.исключения.RuntimeTypeError:
  Обнаружены следующие ошибки типа среды выполнения:
       Аргумент «имя» не относится к типу . Фактический тип был int.
>>> obj.surface = 10000 # Проверка значения > valid8
InvalidSurface: Surface должен находиться в диапазоне от 0 до 10 000 и быть кратным 100.
 

Почему автокласс?

Примитивные типы Python (в частности, dict и tuple ) и его динамическая система типизации делают его чрезвычайно мощным, до такой степени, что разработчикам часто удобнее использовать примитивные типы или универсальные динамические объекты, такие как Munch, а не небольшие пользовательские классы.

Однако в некоторых случаях разработчики по-прежнему хотят определять свои собственные классы, например, чтобы предоставлять строго типизированные API своим клиентам. В таком случае разделение проблем обычно приводит разработчиков к принудительной проверке значения атрибута непосредственно в классе, а не в коде, использующем объект. В конце концов, у разработчиков появляются большие классы, подобные этому:

.
 from valid8 import validate, Boolean
из чисел импортировать Вещественное, Интегральное
от ввода import Необязательно, Union
класс Хаус:
    def __init__(я,
                 Название: ул,
                 поверхность: реальная,
                 nb_floors: Необязательно [Интеграл] = 1,
                 with_windows: логическое значение = ложь):
        self.name = имя
        self.surface = поверхность
        self.nb_floors = nb_floors
        self.with_windows = с_окнами
    # --имя
    @свойство
    имя защиты (я):
        вернуть себя._имя
    @name.setter
    имя защиты (я, имя: улица):
        проверить('имя', имя, instance_of=str)
        self._name = имя
    # --поверхность
    @свойство
    Защитная поверхность (я) -> Реальная:
        вернуть self._surface
    @surface.setter
    Защитная поверхность (я, поверхность: Реальная):
        проверить('поверхность', поверхность, instance_of=Real, min_value=0, min_strict=True)
        self. _surface = поверхность
    # --nb_floors
    @свойство
    def nb_floors(self) -> Дополнительно[Интеграл]:
        вернуть себя._nb_floors
    @nb_floors.setter
    def nb_floors (я, nb_floors: Необязательно [Интеграл]):
        проверить('nb_floors', nb_floors, instance_of=Integral, force_not_none=False)
        self._surface = nb_floors # !**
    # --with_windows
    @свойство
    def with_windows(self) -> Boolean:
        вернуть self._with_windows
    @with_windows.setter
    def with_windows(self, with_windows: Boolean):
        проверить('with_windows', with_windows, instance_of=Boolean)
        self._with_windows = с_windows
 

Не говоря уже о дополнительных методах, таких как __str__ , __eq__ , from_dict , to_dict ...

Вот это много кода - и только для 4-х атрибутов ! Не говоря уже о коде для проверки , который не был включен сюда для удобочитаемости. И угадайте, что — он по-прежнему очень подвержен человеческим ошибкам . Например, я сделал ошибку в сеттере для nb_floors , вы это заметили? Также он делает код менее читаемый : вы заметили, что установщик для свойства поверхности отличается от других?

Действительно, "должен быть лучший способ" : да, и это то, что предоставляет эта библиотека.

Основные характеристики

  • @autoargs — декоратор для метода __init__ класса. Он автоматически присваивает все параметры метода __init__ self . Для более точной настройки также поддерживаются явные списки включения и исключения. Примечание: оригинальная идея и код @autoargs взяты из этого ответа от utnubu

  • @autoprops — декоратор для целого класса. Он автоматически генерирует методы получения и установки свойств для всех атрибутов с правильными подсказками типа PEP484. Что касается @autoargs , список атрибутов по умолчанию — это список параметров метода __init__ , и поддерживаются явные списки включения и исключения.

    • @autoprops automatically adds @contract ( PyContracts ) or @validate_arg (from valid8 ) on the generated setters if a @contract or @validate_arg exists for that attribute on the __init__ метод.
    • @autoprops -сгенерированные геттеры и сеттеры полностью оформлены в соответствии с PEP484, поэтому средства проверки типов, такие как , обеспечивают принудительное применение к сгенерированным методам при использовании для декорирования всего класса. В автоклассе не требуется явная интеграция!
    • Вы можете переопределить геттер или сеттер, сгенерированный @autoprops , используя @getter_override и @setter_override . Обратите внимание, что @contract и @validate по-прежнему будут добавлены в ваш пользовательский сеттер, если они присутствуют в __init__ , вам не нужно повторять это самостоятельно
  • @autodict — декоратор для целого класса. Это заставляет класс вести себя как dict (только для чтения) с контролем того, какие атрибуты видны в этом словаре. Итак, это «представление dict» поверх объекта, в основном противоположное munch (это «представление объекта» поверх словаря). Он автоматически реализует __eq__ , __str__ и __repr__ , если их еще нет.

  • @autohash — декоратор для целого класса. Это делает класс хешируемым, реализуя __hash__ , если он еще не присутствует, где хэш вычисляется из кортежа выбранных полей (все по умолчанию, настраиваемые).

  • @autorepr — декоратор для целого класса. Он добавляет строковое представление, реализуя __str__ и __repr__ , если они еще не представлены.

  • Для всех декораторов в этой библиотеке предусмотрены эквивалентные методы ручной оболочки:

    • autoargs_decorate (init_func, включить, исключить)
    • autoprops_decorate(cls, включить, исключить)
    • autoprops_override_decorate (функция, атрибут, is_getter)
    • autodict_decorate(cls, включить, исключить, only_known_fields, only_public_fields)
    • autohash_decorate(cls, включить, исключить, only_known_fields, only_public_fields)
    • autorepr_decorate(cls, включить, исключить, only_known_fields, only_public_fields)

См.

также