2017-07-11 6 views
0

は、私はそれがある場合は、その後、私は価格が100未満プロパティセッター?

私にはできません、ユーザーに警告する必要があり、私はPhoneインスタンスが100未満の価格で作成されているかどうかを確認する必要があり、この仮定の状況を持っており、この例については、以下を使用しています:

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) 

しかし、このコードは、ユーザーをさせるされていない電話機が少ない100 Pythonでプロパティのセッター機能を有するの使用は何よりも価格を使用して作成することができないことを知っていますオブジェクトを初期化するときに値をチェックできない場合はどうしますか?私はここで何か悪いことをしていますか?

答えて

2

あなたは実際にプロパティセッターを呼び出していません。あなたは直接 "プライベート"変数を設定しています。

ユーザーに警告する場合は、あなたがする必要があります。

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

プロパティは、あなたが離れて抽象内部実装の詳細を可能にする、覚えておいてください(costは、このように、_costためのパブリックインターフェイスです) 。しかし、直接_costを操作すると、インターフェイスは初期化中にユーザーに警告しません。

+1

私は何か愚かなことが分かっていました。インターネットの例のほとんどは、__init__メソッドにパラメータがありませんでしたので、ちょっと混乱しました。 –

+1

@karun_r:誰かが私の質問に答えたときに何をすべきですか?_(http://stackoverflow.com/help/someone-answers) – martineau

+1

答えを受け入れることはありませんか? Alexander Huszaghが問題に数秒で答えたのですが、私はそれをアップアップしました。そして、これが私のコメントでありがとうございました。私の意図は、私がずっと早くそれを理解することができなかった理由です。インターネットからの例)。 –

関連する問題