Синтаксис инициализатора объекта (c #) в python?

Мне было интересно, есть ли быстрый способ инициализировать объект в python.

Например, в c # вы можете создать экземпляр объекта и задать поля / свойства, например …

SomeClass myObject = new SomeClass() { variableX = "value", variableY = 120 }; 

благодаря

Брайан

3 Solutions collect form web for “Синтаксис инициализатора объекта (c #) в python?”

Если вам нужен быстрый грязный объект с некоторыми полями, я настоятельно рекомендую использовать namedtuples

 from collections import namedtuple SomeClass = namedtuple('Name of class', ['variableX', 'variableY'], verbose=True) myObject = SomeClass("value", 120) print myObject.variableX 

Вы можете использовать namedtuple :

 >>> import collections >>> Thing = collections.namedtuple('Thing', ['x', 'y']) >>> t = Thing(1, 2) >>> t Thing(x=1, y=2) >>> tx 1 >>> ty 2 

Если вы создаете класс, вы можете реализовать свои собственные.

Добавьте аргумент **kargs к вашему инициализатору, и для каждого поля в вашем объекте вы можете вызвать kargs.get("{field_name}", {default_value}) . Ниже приведен пример (в синтаксисе Python 2.7) для объекта с hello и foo .

 class MyThing(): def __init__(self, **kargs): self.hello = kargs.get("hello", None) self.foo = kargs.get("foo", None) 

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

 thing = MyThing(hello="world", foo="bar") # Prints "hello world!" print "hello " + thing.hello + "!" # Prints "foo bar baz" print "foo " + thing.foo + " baz" 

Я бы не ожидал рефакторинга – вам также пришлось бы менять вызов kargs.get всякий раз, когда вы меняли имя свойства: /

  • Boost.Python: обратные вызовы для функций класса
  • TNonblockingServer в аварийных ситуациях, когда открывается TFramedTransport
  • что не так с потоками c ++ при использовании boost.python?
  • Проверьте, являются ли два «простых» утверждения if в C эквивалентными
  • Обработка параметров по умолчанию в cython
  • python Выполнение существующего (и большого) кода c ++
  • Понимание списка Python против .NET LINQ
  • Идиоматический способ сделать список / dict в Cython?
  •  
    Interesting Posts for Van-Lav

    Оценка булевых выражений в Python

    как найти буквы, которые не встречаются ни в одной строке?

    Как сделать struct.pack и struct.unpack в cython?

    Что может заставить NetworkX & PyGraphViz работать в одиночку, но не вместе?

    Поддерживает ли python logging.handlers.RotatingFileHandler создание файла записи для записи в группе?

    Как установить xlabel в конце xaxis

    pandas, matplotlib, использовать индекс данных в качестве метки тика оси

    Как запустить скрипт python на моем сервере?

    Pandas интерполирует данные с единицами

    Как удалить символы, отличные от ASCII, но оставить периоды и пробелы с помощью Python?

    Есть ли способ запретить функции python использовать любую переменную, кроме локальных?

    jinja2 print для консоли или ведения журнала

    Django – Как получить URL-адрес администратора из экземпляра модели

    Многопроцессорность Python – Pool.map работает только с одной задачей (вместо нескольких)

    CDATA становится лишенным в lxml даже после использования strip_cdata = False

    Python - лучший язык программирования в мире.