Определить тип фигуры по параметрам: Страница не найдена
Определение типа фигуры по параметрам у девушек и женщин, как определить
Эксперты в разных областях стремятся все подогнать под стандарты, дать название всему — особенностям характера, уровню интеллекта, внешности. Не ускользнули от их внимания и индивидуальные особенности женского телосложения. Изучая конституцию тела и его параметры, эксперты разделили всех представительниц слабого пола по типам фигур. Описали внешние данные, преимущества и недостатки конкретного вида телосложения. Полученными знаниями пользуются в разных областях:
- моде — корректное определение типа фигуры по параметрам позволяет подобрать идеально сидящую на ней модную и красивую одежду, которая будет не просто хорошо сидеть, но и подчеркивать достоинства телосложения, скрывая недостатки;
- питания — подбор рациона по типу фигуры позволяет скорректировать параметры, легко держать в тонусе тело, не переживая о весе;
- спорте — отталкиваясь от типа фигуры, проще выявить и начать работать над «проблемными зонами», подбирать график тренировок.
Точно определить тип строения скелета, пропорции тела «на глаз» достаточно сложно. Нужны замеры и простые математические расчеты. О том, как правильно снять мерки, рассчитать пропорции, поговорим детальнее.
Определения типа фигуры по параметрам запястья
Системой пользуются фитнес-тренеры, диетологи и врачи. Ответить на вопрос, как определить тип фигуры у девушки, — несложно. Потребуется измерить метром запястье. Далее подставить цифры:
- До 15 см — конституция тела астеническая.
Признаки: вытянутая шея, худоба скелета, длинные конечности и тонкие черты лица, грудная клетка узкая и маленькая грудь, узкие плечи, высокий рост. Особенности: мускулатура плохо развита, мгновенная утомляемость, плохая выносливость, ускоренный метаболизм. Астеники энергичны, подвижны, легки.
- В диапазоне 15–17 см — конституция тела нормостеническая.
Признаки: размеры тела очень пропорциональны, выраженная талия, худые ноги, рост средний. Особенности: с возрастом появляется склонность к полноте (при наборе веса жировая масса распределяется равномерно). Нормостеники очень активны и подвижны, отлично скоординированы, резки.
- Свыше 18 см — конституция тела гиперстеническая.
Признаки: низкий рост, широкая кость, массивная грудная клетка, непропорциональность, объемные развернутые плечи, укороченные конечности. Особенности: медленный метаболизм (очень склоны к набору веса), слабая гибкость скелета. Гиперстеники выносливы, обладают отличной мышечной силой.
Для каждого типажа разработаны диетологами и тренерами специальные программы и режимы питания, чтобы без опасных диет и изнуряющих занятий в зале бороться с «проблемными» зонами.
Определение типа фигуры по фруктам и геометрическим параметрам
В мире моды действуют «фруктовые» и «геометрические» тесты. Чтобы выяснить, как определить тип фигуры по параметрам у женщины, надо первоначально снять мерки с тела — талии (ОТ), обхват груди (ОГ), ширину плеч (ШП) и бедер (ОБ). Записать параметры на листик и сверить данные:
- Песочные часы (X-силуэт) — ОБ=ОГ (разница не более 10%) и ОТ<ОБ (свыше 25%).
- Прямоугольник (H-силуэт) — ОБ=ОГ (разница не более 10%) и ОТ<ОБ (не более 20%).
- Стройная колонна (I-силуэт) — ОБ=ОГ=ОТ (разница не более 10%).
- Яблоко (O-силуэт) — ОТ=ОБ, присутствует выступающий вперед живот.
- Груша (А-силуэт) — ОБ>ОГ (разница свыше 12%), зауженные плечи.
- Треугольник перевернутый (T-силуэт) — ШП>ОБ (более чем на 10%).
Отталкиваясь от типа фигуры проще выбирать фасоны вещей и ткани, чтобы скрадывать ее недочеты, подчеркивая преимущества.
Авторские права на статью принадлежат интернет-сайту 101da.ru. Копирование материала запрещено!
как определить и какую одежду носить, советы стилиста
Блогер Маргарита Маслова предлагает пробежаться по основным типам фигуры и запомнить рекомендации по стилю для каждого из них.
Редакция сайта
Теги:
Ким Кардашьян
Модные тренды
Женская фигура
модные ошибки
Как выглядеть стильно
Маргарита Маслова
Блогер
Сегодня я хочу поговорить о том, как определить свой тип фигуры и какие рекомендации по подбору одежды для каждого типа существуют. Распространяется множество классификаций типов женских фигур, а также различные онлайн-сервисы, помогающие определить его по введенным индивидуальным параметрам. Я разберу классическую, привычную многим и наиболее понятную классификацию, состоящую из пяти типов: песочные часы, прямоугольник, груша, треугольник и яблоко.
Как определить тип фигуры женщины
Я постараюсь донести материал кратко и понятно. В описании каждого типа женской фигуры я обозначу характерные черты, области, склонные к полноте, определю задачи по коррекции и дам рекомендации для обладательниц данного телосложения.
Свой тип фигуры можно определить по параметрам, для этого существует несложный алгоритм действий. В качестве инструмента тебе понадобится лишь сантиметровая лента.
ЭТО ИНТЕРЕСНО
Ким Кардашьян и другие звезды, которые из лучших друзей превратились в заклятых врагов
Кто бы сейчас знал о Ким Кардашьян, если бы в свое время Пэрис Хилтон не познакомила ее с нужными людьми! И Ким это признает. «Она помогла мне начать карьеру. Я полностью это признаю! Понимаю, что мало бы кто хотел сказать: «Я стала известной благодаря Пэрис». Но это правда», — рассказывала Ким. Кардашьян и Хилтон долгое время были близкими подругами, но в один момент перестали общаться. В чем причина — неизвестно до сих пор. Девушки пытаются возобновить отношения, но пока у них ничего не выходит.
1 из 7
Калькулятор типа фигуры предназначен не для того, чтобы приукрасить себя перед подругами, а для корректного составления гардероба. Сразу замечу, что замеры нужно производить правильно. От твоей точности зависит твой будущий стильный образ.
- Объем талии – по самой узкой части тела, которая находится немного выше пупка, живот должен быть в расслабленном состоянии, специально втягивать или выпирать его не нужно.
- Объем груди – по самой выступающей точке, расправляя ленту ровно по окружности. Бюстгальтер с эффектом пуш-ап надевать не стоит.
- Объем бёдер – по наиболее широкой части, также направляя ленту строго по окружности, параллельно полу.
Далее ты можешь вычислить тип фигуры по параметрам онлайн или воспользоваться простой шпаргалкой ниже.
Сравнить ширину плеч и бёдер
Производим измерения со спины, с середины левого плеча до середины правого и с боковой стороны бедра до противоположной. Сравниваем две полученные цифры:
- одинаковые = песочные часы, прямоугольник, яблоко
- больше бёдра = груша
- больше плечи = треугольник
Оценить округлость или прямоту бедра
Визуально оцениваем внешнюю линию бедра от талии до колена:
- округлое = песочные часы, груша
- прямое = прямоугольник, треугольник, яблоко
Разница в размерах верха и низа
Одинаковый ли у вас размер блузки и джинсов:
- верх больше = треугольник
- низ больше = груша
- нет разницы = песочные часы, прямоугольник, яблоко
Во многих случаях типы фигур у женщин нуждаются в коррекции. Просто потому, что идеальных очень мало. Для этого нужно определить особенности фигуры, которые можно изменить с помощью одежды. Например, очень большая/маленькая грудь, не очень ровные ноги, очень низкий/высокий рост и прочее.
После проведения замеров считаешь, под какое определение типа фигуры подходит твой вариант – там значков будет больше всего.
При возникновении сложностей, можно найти в сети калькулятор типа фигуры по параметрам. Свои сантиметры ты вносишь в соответствующие строки и тут же получаешь ответ, какими формами обладаешь.
Если ты не знаешь, к какому типу фигуры подходит тот или иной фасон, наряд, ткань, запомни следующие базовые рекомендации. Они помогут создать впечатляющий и привлекательный образ для любого силуэта с учетом его характеристики.
Тип фигуры «песочные часы»
Пышный бюст, полные бёдра, узкая талия. Первые два пункта не нужно принимать буквально. Здесь, скорее, имеется в виду ярко выраженный контраст в объёмах бёдер, груди и линии талии, который отличает типы фигуры в виде песочных часов. Кстати, талия у таких девушек чаще тонкая. А вот пышную грудь четвёртого размера иметь необязательно, чтобы быть «песочными часами».
Полнеет
С сохранением выраженной линии талии, икры и щиколотки остаются стройными.
Задача
«Песочный» тип женской фигуры считается идеалом и в большинстве случаев не нуждается в коррекции. Основная задача — не испортить природную красоту изгибов мешковатой одеждой, так как попытка скрыть женственные формы может привести к нежелательному эффекту и сделать фигуру более полной.
Несмотря на то, что этот тип фигуры самый красивый, стремящийся к общепринятым 90/60/90, подчёркивать женственность форм нужно очень аккуратно. Если, конечно, ты не хочешь, чтобы образ превратился в нечто в стиле Ким Кардашьян. Худые «песочные часы» легко могут носить одежду, рекомендованную для «прямоугольника» (полуприлегающего силуэта, но не мешковатую).
Кстати, великий кутюрье Кристиан Диор в середине 20 века прославил самый красивый тип фигуры у женщин. Он создал настоящий шедевр в мире моды, предложив дамам пышную юбку, узкий лиф и подчеркнув талию ремешком.
Хорошо работают
- струящиеся ткани, акцент на талии.
Противопоказаны
- плотные и жесткие ткани
- резкие линии
- вульгарность
Тип фигуры «груша»
Полные бёдра при небольшом «верхе», ярко обозначенная талия, небольшая грудь, тонкие руки, массивные щиколотки. Если ты захочешь рассчитать тип фигуры, воспользовавшись тестом онлайн, при таких параметрах он выдаст тебе вариант «груша» или «треугольник». Зачастую девушки с такими объемами работают моделями. А у некоторых представительниц прекрасного пола, напротив, наблюдается «внизу» избыточный вес или широкие бёдра.
Полнеет
В нижней части тела (бёдра, ноги).
Задача
Нужно привести «грушу» к «песочным часам» (сделать верхнюю часть тела более объёмной, а нижнюю сузить). Можешь воспользоваться лайфхаками, благодаря которым тип фигуры «груша» пропорции приходят к гармонии.
Хорошо работают
- акцент в верхней части: светлые цвета, принты, яркие детали
- приталенный силуэт
- плавные линии кроя и мягкие ткани
- подплечники, акценты на плечах
- объёмные шарфы, актуальные в этом сезоне меховые воротники, шляпы, крупные аксессуары
- толстый каблук.
Противопоказаны
- акцент на нижней части тела, горизонтальные линии в области бёдер, например, брюки/джинсы с заниженной талией
- светлый низ
- прямой силуэт, А-силуэт
- укороченные брюки
- обувь с ремешком на щиколотке и тонкие шпильки (подчеркнет массивность).
Тип фигуры «прямоугольник»
Объёмы талии, бёдер и груди примерно равны. Как правило, линия талии нечёткая, зато стройные, часто длинные ноги. Типы фигур в виде прямоугольника часто встречаются не только у девушек, но и у парней.
От того, что телосложение напоминает атлетическое, многие женщины комплексуют. Кроме того, на фото подобные типы фигур кажутся плоскими, выглядят по-мальчишески, если у дамы маленькая грудь. Весь силуэт кажется прямым, без женственных изгибов. Но и эти моменты можно нивелировать правильной одеждой.
Полнеет
Равномерно или в верхней части тела.
Задача
Фигура «прямоугольник» считается модельной и самой универсальной. Что же тогда лучше носить такому типу фигуры? По большому счёту, обладательницы «прямоугольного» варианта могут носить всё что угодно (а вот и преимущество!). Нужно лишь быть аккуратной с элементами романтического стиля, силуэт New Look – совсем не история «прямоугольников».
Хорошо работают
- декольте
- плотные, жесткие ткани
- спортивный крой
- деловой стиль
- обувь на плоском ходу (но и каблуки, естественно, не исключаются)
Противопоказаны
- акцент на талии (У «прямоугольника» линия талии слабо выражена, если делать на ней акцент, её отсутствие станет лишь более явным! Не нужно заострять внимание на том, что не является достоинством)
- романтический стиль (рюши, воланы, летящие платья и так далее)
Тип фигуры «треугольник»
Широкие плечи, узкая талия, стройные ноги, плоская попа. Мы продолжаем рассматривать типы «мужских» фигур, свойственные некоторым женщинам. Внешней это выглядит так, что грудная клетка объемнее, чем низ туловища, а плечи кажутся мощнее бёдер.
Подобный тип фигуры еще называют «перевернутый треугольник». Нередко ее обладательницы могут похвастаться стройными и длинными ногами. Хитрости от стилистов подведут формы к нужным пропорциям, чтобы аутфит получился эффектным и достойным.
Стоит отметить, что в современном обществе типы фигур, похожие на перевернутый треугольник, зачастую относят к спортивным. Так уж они выглядят. Хотя нередко эти девушки от мира спорта далеки и хотели бы изменить свои формы. Но все визуальные диспропорции без труда можно замаскировать, если знать, какую подобрать одежду. Между прочим, женщинам с таким силуэтом поклонялись представители кикладской цивилизации. Они создавали их скульптурные изображения, увековечивая эталон женской красоты. Мода изменчива, в том числе и на фигуру.
Полнеет
В плечах, руках и щеках.
Задача
Чтобы привести фигуру к «прямоугольнику», надо сделать плечи уже. Ни в коем случае не пытаться корректировать низ в пользу расширения, иначе получится тип фигуры «песочный часы». С широкими плечами есть риск стать похожей на мощную регбистку.
Хорошо работают
- акцент на бедра (светлый низ, принт)
- полуприлегающий силуэт
- спортивный стиль
- жесткие ткани
- вещи «мужского» кроя (особенно рубашки)
- жилеты
- V- образный вырез
- длинные шейные украшения, галстуки («вытянуть» туловище)
- рукав-реглан
- длинные волосы
Противопоказаны
- стрижка каре
- акцент на верхней части тела
- шляпы, шарфы, крупные серьги
- мягкие ткани
- воланы, кружева, цветочный принт
- топы и платья с тонкими лямками (иллюзия контраста: маленькое рядом с большим кажется еще меньше и наоборот, а тонкие лямки сделают плечи шире)
- футболки с очень коротким рукавом — лучше выбирать длину «три четверти» или подворачивать длинный рукав.
Тип фигуры «яблоко»
Полная талия, покатые плечи, стройные ноги. Грудь, как правило, выдающаяся. Определить этот тип фигуры по указанным параметрам несложно: таких девушек и женщин в России много. У «яблока» основная часть объема приходится на верхнюю часть тела. К их великой удаче, ноги часто остаются стройными.
Полнеет
Талия, живот, руки, шея.
Задача
Из мягких линий, присущих типу фигуры «яблоко», сделать более жёсткие, скрыть живот, привести к «прямоугольнику».
Хорошо работают
- акцент на ногах
- декольте (но не забываем о том, что подчеркиваем мы только достоинства фигуры!)
- полуприлегающий силуэт для стройного «яблока», А-силуэт для полного
- силуэт «Баленсиага» (бомберы)
- акцент либо на верхней части тела, либо на нижней
- V-образный вырез
Противопоказаны
- мягкие ткани
- верх, заправленный в брюки/юбку (подчеркивает полную талию)
- акцент на талии: ремни, контрастные линии, принты, пояс
- рукава «три четверти»
- укороченные жакеты и кардиганы (иллюзия горизонтальной линий расширяет)
- завышенная талия в обтягивающих вещах.
Нестандартные типы фигуры
Существуют, конечно, случаи, не подходящие под правила из этой теории. Каждый человек уникален. Как бы девушка не стремилась к общепризнанным стандартам, у нее могут быть свои изюминки и недостатки. Так что не все типы женских фигур можно вместить в пять категорий и делать это необходимости нет.
Например, девушка с типом фигуры «прямоугольник» хочет выглядеть женственной и романтичной. Но одежда спортивного кроя, рекомендованная её типу фигуры по описанию, совершенно не нравится ей. Здесь уже в дело вступает дело вкуса и личных предпочтений.
В случае таких расхождений нужно опираться на рекомендации, но вводить желаемые детали, цвета и принты в те зоны, которые не решают коррекцию. Подобранная по типу фигуры одежда должна носиться с удовольствием, а не быть навязанной кем-то. Поэтому у каждой есть возможность привносить в образ своё.
Например, под тип фигуры «прямоугольник» можно выбрать прямые брюки, идеально ему подходящие, в пудрово-розовом оттенке или с цветочным принтом. Дополнить их белым жилетом, милой сумочкой, нюдовыми лодочками — чем не романтика и нежность?
Да и рубашка может быть вполне девичьего цвета и рисунка, главное для прямоугольника — никаких рюшей, оборок и воланов. И по такому принципу можно действовать с любыми параметрами. По сути, все типы красивых фигур можно как испортить неверно подобранным гардеробом, так и подчеркнуть достоинства каждого грамотной расстановкой деталей.
Фото: Shutterstock
Параметр формы: определение и примеры
Определения статистики > Параметр формы
Что такое параметр формы?
Параметр формы, как следует из названия, влияет на общую форму распределения ; они представляют собой семейство распределений различной формы. Параметры обычно известны из предшествующих статистических данных или иногда оцениваются из текущих данных.
Бета-распределение в формате pdf, показывающее несколько различных форм с параметрами формы α и β . Например, Бета-распределение имеет параметр формы. Изменение этого параметра изменяет общую форму графика.
Экспоненциальное распределение не имеет параметра формы, поэтому общая форма остается неизменной. Изображение предоставлено: Skbkekas|Wikimedia CommonsВ отличие от некоторых других дистрибутивов , не имеют этих параметров. Они включают экспоненциальное распределение. Несмотря на то, что экспоненциальное распределение можно сжать, растянуть или сдвинуть, общая форма остается неизменной.
Самое важное, что нужно понять о параметре формы, это то, что он не меняется , где график лежит на горизонтальной оси декартовой плоскости (это работа параметра местоположения). Он также не сжимает и не сжимает график (работа параметра масштаба). Он просто определяет общую форму графика для определенных распределений.
В некоторых распределениях (например, в распределении Вейбулла) этот параметр может помочь определить асимметрию. Например:
- Большие параметры обычно приводят к левостороннему распределению.
- Меньшие параметры, как правило, приводят к асимметричному распределению вправо.
Это не универсальное правило, а всего лишь общая рекомендация.
Другие параметры, влияющие на формы распределений
Некоторые другие параметры, используемые для определения распределений:
- Параметр Location сообщает вам, где находится центр распределения по горизонтальной оси.
- Параметр Масштаб дает представление о масштабе по горизонтальной оси. Например, параметр масштаба стандартного нормального распределения равен одному стандартному отклонению (σ). Обычно он растягивает или сжимает график.
Ссылки
Abramowitz, M. and Stegun, I.A. (Eds.). Справочник по математическим функциям с формулами, графиками и математическими таблицами, 9-е издание. Нью-Йорк: Довер, 1972.
УКАЗЫВАЙТЕ ЭТО КАК:
Стефани Глен . «Параметры формы: определение и примеры» из StatisticsHowTo.com : Элементарная статистика для всех нас! https://www.statisticshowto.com/shape-parameter/
————————————————— ————————-
Нужна помощь с домашним заданием или контрольным вопросом? С Chegg Study вы можете получить пошаговые ответы на свои вопросы от эксперта в данной области. Ваши первые 30 минут с репетитором Chegg бесплатны!
Комментарии? Нужно опубликовать исправление? Пожалуйста, Свяжитесь с нами .
python — Определить тип объекта?
Задавать вопрос
спросил
Изменено
1 месяц назад
Просмотрено
2,1 млн раз
На этот вопрос уже есть ответы здесь :
Каков канонический способ проверки типа в Python?
(13 ответов)
Закрыт в прошлом месяце.
Есть ли простой способ определить, является ли переменная списком, словарем или чем-то еще?
- python
- словарь
- типы
- typeof
13
Есть две встроенные функции, помогающие определить тип объекта. Вы можете использовать type()
, если вам нужен точный тип объекта, и isinstance()
to проверить тип объекта на соответствие чему-либо. Обычно вы хотите использовать isinstance()
в большинстве случаев, так как он очень надежен и также поддерживает наследование типов.
Чтобы получить фактический тип объекта, вы используете встроенную функцию type()
. Передача объекта в качестве единственного параметра вернет объект типа этого объекта:
>>> type([]) is list Истинный >>> type({}) это dict Истинный >>> type('') is str Истинный >>> тип (0) является целым Истинный
Это, конечно, также работает для пользовательских типов:
>>> class Test1 (объект): проходить >>> класс Test2 (Тест1): проходить >>> а = Тест1() >>> б = Тест2() >>> тип (а) — Test1 Истинный >>> тип (b) — Test2 Истинный
Обратите внимание, что type()
вернет только непосредственный тип объекта, но не сможет сообщить вам о наследовании типов.
>>> тип (b) — Test1 ЛОЖЬ
Чтобы покрыть это, вы должны использовать функцию isinstance
. Это, конечно, работает и для встроенных типов:
>>> isinstance(b, Test1) Истинный >>> isinstance(b, Test2) Истинный >>> isinstance(a, Test1) Истинный >>> isinstance(a, Test2) ЛОЖЬ >>> isinstance([], список) Истинный >>> isinstance({}, словарь) Истинный
isinstance()
обычно является предпочтительным способом обеспечения типа объекта, поскольку он также принимает производные типы. Поэтому, если вам действительно не нужен объект типа (по какой-либо причине), использование isinstance()
предпочтительнее, чем type()
.
Второй параметр isinstance()
также принимает кортеж типов, поэтому можно одновременно проверять наличие нескольких типов. isinstance
вернет true, если объект относится к одному из следующих типов:
>>> isinstance([], (кортеж, список, набор)) Истинный
16
Использовать type()
:
>>> a = [] >>> тип(а) <тип 'список'> >>> ф = () >>> тип(ф) <тип 'кортеж'>
0
Возможно, было бы более Pythonic использовать блок try
. .. , кроме блока
. Таким образом, если у вас есть класс, который крякает, как список, или крякает, как диктофон, он будет вести себя правильно независимо от того, какой у него тип 9.0018 действительно .
Чтобы уточнить, предпочтительный метод «объяснения различий» между типами переменных — это нечто, называемое утиной типизацией: пока методы (и возвращаемые типы), на которые отвечает переменная, соответствуют ожиданиям вашей подпрограммы, относитесь к ней так, как вы ожидать, что это будет. Например, если у вас есть класс, который перегружает операторы скобок с помощью getattr
и setattr
, но использует какую-то забавную внутреннюю схему, было бы уместно, если бы он вел себя как словарь, если он пытается это эмулировать.
Другая проблема с проверкой типа (A) типа (B)
заключается в том, что если A
является подклассом B
, он оценивается как false
, тогда как программно вы надеетесь, что это будет . правда
. Если объект является подклассом списка, он должен работать как список: проверка типа, представленного в другом ответе, предотвратит это. (Однако isinstance
будет работать).
2
В экземплярах объекта у вас также есть:
__class__
атрибут. Вот пример, взятый из консоли Python 3.3
>>> str = "str" >>> ул.__класс__ <класс 'ул'> >>> я = 2 >>> i.__класс__ <класс 'целое число'> >>> Тест класса(): ... проходить ... >>> а = Тест() >>> а.__класс__ <класс '__main__.Test'>
Имейте в виду, что в Python 3.x и в классах New-Style (опционально доступных из Python 2.6) класс и тип были объединены, и это иногда может привести к неожиданным результатам. В основном по этой причине мой любимый способ тестирования типов/классов — использовать встроенную функцию isinstance.
2
Определить тип объекта с помощью type
>>> obj = object() >>> тип(объект) <класс 'объект'>
Хотя это и работает, избегайте атрибутов с двойным подчеркиванием, таких как __class__
— они семантически не являются общедоступными, и, возможно, не в этом случае, встроенные функции обычно ведут себя лучше.
>>> obj.__class__ # избегайте этого! <класс 'объект'>
проверка типа
Есть ли простой способ определить, является ли переменная списком, словарем или чем-то еще? Я получаю объект, который может быть любого типа, и мне нужно уметь отличать его.
Ну, это другой вопрос, не используйте type — используйте isinstance
:
def foo(obj): """дана строка с элементами, разделенными пробелами, или список или кортеж, сделать что-то разумное """ если isinstance (obj, str): объект = ул.split() вернуть _foo_handles_only_lists_or_tuples (объект)
Это относится к случаю, когда ваш пользователь может делать что-то умное или разумное, создав подкласс str
— в соответствии с принципом замены Лискова вы хотите иметь возможность использовать экземпляры подкласса, не нарушая ваш код — и isinstance
поддерживает это .
Использование абстракций
Еще лучше, вы можете искать конкретный абстрактный базовый класс из коллекций
или чисел
:
из коллекций import Iterable из номеров импортировать номер деф бар (объект): """делает что-то разумное с итерацией чисел, или только один номер """ if isinstance(obj, Number): # сделать его 1-кортежным объект = (объект,) если не isinstance (obj, Iterable): поднять TypeError('obj должен быть либо числом, либо повторяющимся числом') вернуть _bar_sensible_with_iterable (объект)
Или просто не выполняйте явную проверку типов
Или, что лучше всего, используйте утиную печать и не проверяйте код явно. Утиная типизация поддерживает замену Лискова с большей элегантностью и меньшим количеством многословия.
деф баз(объект): """с учетом объекта, словаря (или чего-либо с методом .items) сделать что-то разумное с каждой парой ключ-значение """ для ключа, значение в obj.items(): _baz_something_sensible(ключ, значение)
Вывод
- Использование
введите
, чтобы фактически получить класс экземпляра. - Используйте
isinstance
для явной проверки наличия фактических подклассов или зарегистрированных абстракций. - И просто избегайте проверки типов там, где это имеет смысл.
3
Вы можете использовать type()
или isinstance()
.
>>> type([]) это список Истинный
Имейте в виду, что вы можете затереть список
или любой другой тип, назначив переменную в текущей области с тем же именем.
>>> the_d = {} >>> t = lambda x: "верно", если тип (x) равен dict, иначе "NOPE" >>> t(the_d) 'хорошо' >>> dict = "чувак". >>> t(the_d) 'НЕТ'
Выше мы видим, что dict
переназначается на строку, поэтому тест:
type({}) is dict
…сбой.
Чтобы обойти это и использовать type()
более осторожно:
>>> import __builtin__ >>> the_d = {} >>> type({}) это dict Истинный >>> Дикт = "" >>> type({}) это dict ЛОЖЬ >>> type({}) is __builtin__.dict Истинный
3
будьте осторожны при использовании isinstance
isinstance(True, bool) Истинный >>> isinstance(True, int) Истинный
но тип
type(True) == bool Истинный >>> type(True) == int ЛОЖЬ
1
Хотя вопросы довольно старые, я наткнулся на это, когда сам искал правильный путь, и я думаю, что это все еще нуждается в уточнении, по крайней мере для Python 2. x (на Python 3 не проверял, но поскольку проблема возникает с классическими классами, которых нет в такой версии, это, вероятно, не имеет значения).
Здесь я пытаюсь ответить на вопрос заголовка: как я могу определить тип произвольного объекта ? Другие предложения об использовании или неиспользовании isinstance хороши во многих комментариях и ответах, но я не рассматриваю эти проблемы.
Основная проблема с подходом type()
заключается в том, что он не работает должным образом с экземплярами старого стиля :
class One: проходить второй класс: проходить о = один () т = два () о_тип = тип (о) t_type = тип (т) print "Являются ли экземпляры o и t одним и тем же классом?", o_type равен t_type
Выполнение этого фрагмента даст:
Являются ли экземпляры o и t одним и тем же классом? Истинный
Я утверждаю, что это не то, чего ожидает большинство людей.
Подход __class__
наиболее близок к правильности, но он не сработает в одном критическом случае: когда переданный объект является старомодным класс (не экземпляр!), так как у этих объектов нет такого атрибута.
Это наименьший фрагмент кода, который я мог придумать, который последовательно удовлетворяет такой законный вопрос:
#!/usr/bin/env python из типов импортировать ClassType # мы принимаем шаблон нулевого объекта в (маловероятном) случае #что __class__ имеет значение None по какой-то странной причине _NO_CLASS=объект() определение get_object_type (объект): obj_type = getattr(obj, "__class__", _NO_CLASS) если obj_type не _NO_CLASS: вернуть obj_type # Насколько я знаю, единственная ситуация, в которой это происходит, это класс в старом стиле. obj_type = тип (объект) если obj_type не ClassType: поднять ValueError("Не удалось определить тип объекта '{}'..format(obj_type)) вернуть obj_type
В дополнение к предыдущим ответам стоит упомянуть о существовании collections.abc
, который содержит несколько абстрактных базовых классов (ABC), дополняющих утиную печать.
Например, вместо того, чтобы явно проверять, является ли что-то списком с помощью:
isinstance(my_obj, list)
вы могли бы, если вам интересно только узнать, позволяет ли ваш объект получать предметы, используйте collections. abc.Sequence
:
from collections.abc import Sequence isinstance (my_obj, последовательность)
, если вас строго интересуют объекты, которые позволяют получать, устанавливать и удалять элементы (т. е. изменяемых последовательностей ), вы должны выбрать collections.abc.MutableSequence
.
Многие другие ABC определены там, Mapping
для объектов, которые можно использовать в качестве карт, Iterable
, Callable
и так далее. Полный список всего этого можно увидеть в документации для collections.abc
.
Во многих практических случаях вместо типа
или isinstance
вы также можете использовать @functools.singledispatch
, который используется для определения общих функций (функция , состоящая из нескольких функций, реализующих одну и ту же операцию для разных типов ).
Другими словами, вы хотели бы использовать его, когда у вас есть код, подобный следующему:
def do_something(arg): если isinstance (arg, int): . .. # некоторый код, специфичный для обработки целых чисел если isinstance (arg, str): ... # некоторый код, специфичный для обработки строк если экземпляр (аргумент, список): ... # некоторый код, специфичный для обработки списков ... # так далее
Вот небольшой пример того, как это работает:
из functools import singledispatch @singledispatch def say_type (аргумент): поднять NotImplementedError(f"Я не работаю с {type(arg)}") @say_type.register защита _ (аргумент: целое число): print(f"{arg} является целым числом") @say_type.register защита _ (аргумент: логическое значение): print(f"{arg} является логическим значением")
>>> say_type(0) 0 - целое число >>> say_type(False) False — логическое значение >>> say_type(dict()) # длинная трассировка ошибок, заканчивающаяся на: NotImplementedError: я не работаю с
Кроме того, мы можем использовать абстрактные классы для одновременного охвата нескольких типов:
из collections. abc import Sequence @say_type.register def _(аргумент: последовательность): print(f"{arg} - это последовательность!")
>>> say_type([0, 1, 2]) [0, 1, 2] — это последовательность! >>> say_type((1, 2, 3)) (1, 2, 3) — это последовательность!
значение = 12 print(type(value)) # вернет(означает целое число)
или вы можете сделать что-то вроде этого
значение = 12 print(type(value) == int) # вернет true
с использованием type()
x='привет, это строка' печать (тип (х))
вывод
<класс 'str'>
для извлечения только строки используйте этот
x='это строка' print(type(x).__name__)#вы можете использовать__name__для поиска класса
выход
стр
если вы используете type(variable).__name__
мы можем его прочитать
type()
это лучшее решение чем isinstance()
, особенно для0117 booleans :
True
и False
— это просто ключевые слова, которые означают 1
и 0
в python.