2017-02-02 24 views
0

у меня есть это:установить опциональный/требуемое свойство в соответствии с условием

def required(props): 
    props.fget.required = True 
    return props 

class SomeClass(): 
    @required 
    @property 
    def func(self): 
     return self.conname("conname") 

Но я хочу это: когда self.name атрибут SomeClass Эквале «значение», а затем сделать свойство необязательным, когда неравной отпуск обязательный.

+0

я попытался сделать класс наследуется от 'property' (для украшения с этим классом), но была проблема с числом аргументов, которое я не понял. – igor

ответ

0

Вы могли бы справиться с этим в инициализаторе так:

class SomeClass(object): # inherit from object if you are using python 2.7 
    def __init__(self, name, optional_required_property=None): 
     self.name = name 
     if name == "value" and optional_required_property is None: 
      raise AttributeError("optional_required_property cannot be None.") 
     else: 
      self.optional_required_property = optional_required_property 
test_someclass = SomeClass("test") # will work 
test_someclass = SomeClass("value") # will fail 

Вдохновленный Stack Overflow Question: How to implement a required property in Python

 Смежные вопросы

  • Нет связанных вопросов^_^