Рубрики
Без рубрики

Как создать встроенные объекты со свойствами? [ Python One-lister]

Проблема: как создать объект Python в одной строке кода? И как вы можете связать пользовательские свойства на этот объект в той же линии? Пример: скажем, вы хотите сделать что-то вроде этого псевдокодного фрагмента: var ({‘свойство’: «Значение»}) newObject.property #, возвращает «значение», однако, вы не можете сделать то же самое … Как создать встроенные объекты со свойствами? [Python One-lister] Подробнее “

Автор оригинала: Chris.

Проблема : Как создать объект Python в одной строке кода? И как вы можете связать пользовательские свойства на этот объект в той же линии?

Пример : Скажем, вы хотите сделать что-то вроде этого псевдокодного фрагмента:

var newObject = new({'property' : 'value' })
newObject.property # returns 'value'

Тем не менее, вы не можете сделать то же самое в Python, потому что это создаст словарь:

new_object = {'property': 'value'}
new_object.property
# raises an AttributeError

Это поднимает AttributeError Потому что нет атрибута Недвижимость связано с объектом словаря. Чтобы получить доступ к ключу словаря в этом случае, вы должны использовать синтаксис New_Object [«Свойство»] Отказ

Итак, как создать встроенный объект Python с атрибутами в одной строке кода Python?

Вот быстрый обзор наших трех методов:

Упражнение : Сделайте все три метода одинаковым выходом? Запустите код, чтобы проверить его!

Давайте погрузимся в каждый из этих методов более подробно!

Метод 1: Используйте встроенный тип Python () функция

Тип (имя, базы, Dict ) Функция создает и возвращает новый объект. Требуется три аргумента, которые позволяют настроить объект:

  • Имя : Это название класса нового объекта. Это становится Имя атрибут, чтобы вы могли использовать объект. Несколько Для доступа к значению аргумента.
  • Основы : Это кортеж одного или нескольких ценностей кортежей, которые определяют базовые классы. Вы можете получить доступ к контенту через объект. Базы атрибут вновь созданного объекта.
  • обдумывать : Это пространство имен с Атрибуты класса и методы определения. Вы можете создавать пользовательские атрибуты и методы здесь. В случае, если вы хотите получить доступ к значениям позже, вы можете использовать объект .__ Dict__ атрибут на недавно созданном объекте.

Вот как вы можете использовать функцию типа () для создания нового объекта с атрибутами в одной строке кода:

obj = type('obj', (object,), {'property': 'value'})

Давайте посмотрим, как мы можем получить доступ к свойству атрибута вновь созданного объекта:

>>> obj

>>> obj.property
'value'

Оно работает! Созданный класс имеет связанный атрибут Недвижимость это установлено на «Значение» Отказ

Однако это не экземпляр (или объект), но. Это только определение класса. Чтобы на самом деле создать экземпляр, вы должны использовать следующий метод с конечной парой скобок.

obj = type('obj', (object,), {'property': 'value'})()

Теперь вы можете создать произвольное количество экземпляров.

Способ 2: функция лямбда без возвращаемого значения + динамические атрибуты

Второй метод менее чистый – это больше взлома – но он работает красиво! Идея состоит в том, чтобы создать анонимную функцию, используя ключевое слово LAMBDA и ассоциировать желаемые атрибуты сразу:

>>> obj = lambda: None
>>> obj.property = 'value'
>>> obj.property
'value'

Вы также можете одноавторизовать это с помощью Semicolon:

obj = lambda: None; obj.property = 'value'

Это достигает желаемого результата и использует только одну строку кода Python!

Метод 3: Использовать именованные кортежи из модуля коллекций

Вы также можете использовать названные кортежи из модуля коллекций.

from collections import namedtuple

obj = namedtuple('obj', ['property'])('value')
print(obj.property)

Полученный выход – это значение свойства «Значение» Отказ

  • Первая часть выражения NamedTuple («OBJ», [«Свойство»]) Позволяет создать новый объект, используя obj (...) конструктор.
  • Вторая часть выражения связывает строку «Значение» к атрибуту кортежа «Собственность» Отказ

Куда пойти отсюда?

Достаточно теории, давайте познакомимся!

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

Практические проекты – это то, как вы обостряете вашу пилу в кодировке!

Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?

Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.

Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.

Присоединяйтесь к свободному вебинару сейчас!

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python одноклассники (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

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

Оригинал: “https://blog.finxter.com/how-to-create-inline-objects-with-properties-python-one-liner/”