2017-02-02 3 views
0

Ich habe dies:gesetzt optional/erforderliche Eigenschaft nach Zustand

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

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

Aber ich mag dies: wenn self.name Attribut von Someclass „Wert“ Equale, dann ist die Eigenschaft optional machen, wenn nicht gleich Urlaub erforderlich.

+0

ich versuchte Klasse von 'property' zu machen geerbt (mit dieser Klasse dekorieren), aber es war das Problem mit Argumenten Nummer, die ich nicht verstanden habe. – igor

Antwort

0

Man könnte dies wie so in den Initialisierungsliste Griff:

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 

Inspiriert von Stack Overflow Question: How to implement a required property in Python

Verwandte Themen