Перечисление Nullable nullable вопрос о типе

model_definition метод нуждается в экземпляре, это то, что означает параметр self. Теперь, чтобы использовать декоратор в экземпляре, вы можете просто передать экземпляр в качестве параметра. Вот пример, где декоратор статичен:

class Upper(object):
    def __init__(self):
        self.model = None

    @staticmethod
    def model_definition(name=''):
        def func(f):
            def wrapper(*args):
                self = args[0]
                print('I am defining the model')
                if not self.model:
                    self.model = name
                return f(*args)

            return wrapper

        return func

class Lower(Upper):
    def __init__(self):
        Upper.__init__(self)
        self.define_model()

    @Upper.model_definition(name='example_model')
    def define_model(self):
        print('The model is : ', self.model)

Main:

l = Lower()

Я определяю модель

('Модель: ',' example_model ')

10
задан Jon Seigel 7 April 2010 в 02:40
поделиться

3 ответа

Я думаю, что просто необходимо бросить результат Enum.Parse кому: MyEnum?. Дело обстоит так с nullable ints, по крайней мере. Например:

int? i;
i = shouldBeNull ? null : (int?) 123;

Так:

MyClassEnum = Convert.IsDBNull(x)
    ? null
    : (MyEnum?) Enum.Parse(typeof(MyEnum), x.ToString(), true)
18
ответ дан 3 December 2019 в 14:35
поделиться

В Вашем коде существует синтаксическая ошибка: положение ':' и'?' должен быть обменен:

MyClassEnum = Convert.IsDBNull(x) ? null : 
            (MyEnum) Enum.Parse(typeof(MyEnum), x.ToString(), true)

BTW:

насколько я знаю, рекомендуемый путь состоит в том, чтобы использовать перечислимый элемент под названием 'Ни один' вместо перечисления Nullable, например:

public enum MyEnum
{
    None, Value1, Value2, Value3
}

и

MyClassEnum = Convert.IsDBNull(x) ? MyEnum.None : 
            (MyEnum) Enum.Parse(typeof(MyEnum), x.ToString(), true);
11
ответ дан 3 December 2019 в 14:35
поделиться

Я думаю, что необходимо будет просто бросить результат к (MyEnum?), а не (MyEnum)?

4
ответ дан 3 December 2019 в 14:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: