2017-03-22 5 views
-1

私はPython tutorialを読んでいます。Pythonのメソッド名と変数名の関係

変数名pinAとメソッド名getPinA()の関係はどのような関係にありますか?それはscalaの自動ゲッターセッターに似ていますか?

class BinaryGate(LogicGate): 

    def __init__(self,n): 
     LogicGate.__init__(self,n) 

     self.pinA = None 
     self.pinB = None 

    def getPinA(self): 
     return int(input("Enter Pin A input for gate "+ self.getLabel()+"-->")) 

    def getPinB(self): 
     return int(input("Enter Pin B input for gate "+ self.getLabel()+"-->")) 
+2

についてはこちらの詳細を読むことができます。下にスクロールして、完全なコードを見てください。 –

+2

また、FWIW、Pythonのガイドラインは 'namingLikeThis'ではなく' naming_like_this'を提案しています –

答えて

0

スカラ座での自動化されたゲッターセッターとそれが似ています。

実際はありません。 self.pinA = Noneは、pinAを常にNoneに設定します。 getPinA()を呼び出すと、常にinput()関数が使用され、self.pinAの値は検索されません。

Pythonには、これらのJVM言語のような「カプセル化」はありません。言い換えると、常に属性にアクセスできるため、「getter &セッター関数」の概念は必要ありません。

しかし、@propertyを使用することができます。これは、基になる値を持つゲッターを実装する方法のように動作します。

class BinaryGate(LogicGate): 

    def __init__(self,n): 
     LogicGate.__init__(self,n) 
     self._pinA = None 

    @property 
    def pinA(self): 
     if self._pinA is None: 
      self._pinA = int(input("Enter Pin A input for gate "+ self.getLabel()+"-->")) 
     return self._pinA 

あなたは何それはないんいくつかのPython conventions

関連する問題