2017-07-11 2 views
0

Ich habe diese hypothetische Situation, wo ich überprüfen müssen, ob eine Phone Instanz mit Preis erstellt wird weniger als 100 und, wenn ja, dann muß ich die Benutzer warnen, dass der Preis nicht weniger als 100Property Setter in __init__ Methode?

ich sein kann die unten verwende für dieses Beispiel:

class Phone(object): 
    def __init__(self,v): 
     self._cost = v 

    @property 
    def cost(self): 
     return self._cost 

    @cost.setter 
    def cost(self,value): 
     if value < 100: 
      print("Cost cannot be less than 100") 
     else: 
      self._cost = value 

s8 = Phone(98) 

Aber dieser Code lässt den Benutzer nicht wissen, dass ein Telefon kann nicht mit dem Preis erstellt werden weniger als 100. Was ist die Verwendung einer Set-Funktion für eine Eigenschaft in Python zu haben Wenn wir die Werte nicht überprüfen können, wenn wir das Objekt initialisieren? Mache ich hier etwas falsch?

Antwort

2

Sie nennen den Property Setter nicht wirklich. Sie setzen direkt die Variable "private".

Wenn Sie den Benutzer warnen wollen, müssen Sie tun:

def __init__(self,v): 
    self.cost = v 

Denken Sie daran, eine Eigenschaft ermöglicht es Ihnen, zu abstrahieren interne Implementierungsdetails (cost, auf diese Weise ist die öffentliche Schnittstelle für _cost) . Wenn Sie jedoch selbst _cost manipulieren, warnt Ihre Schnittstelle den Benutzer während der Initialisierung nicht.

+1

Ich wusste, dass ich etwas dummes vermisste. Die meisten Beispiele im Internet hatten keine Parameter in __init__ Methoden, daher war ich etwas verwirrt. –

+1

@karun_r: Bitte lesen [_Was soll ich tun, wenn jemand meine Frage beantwortet? _] (Http://StackOverflow.com/Help/Someone-answers) – martineau

+1

Es geht darum, die Antwort nicht zu akzeptieren (Es erlaubte mir nicht zu tun Alexander Huszagh hat die Frage innerhalb weniger Sekunden beantwortet, aber ich habe es aufgegriffen, und wenn es darum ging, dass mein Kommentar als Dankeschön erklingt, wurde meine Absicht erwähnt, warum ich es nicht viel früher mit Hilfe des Beispiele aus dem Internet.) –

Verwandte Themen