2017-03-22 53 views
-1

我正在阅读python tutorialPython方法名称和变量名称关系

变量名称pinA与方法名称getPinA()有什么关系,它与scala中的自动getter setter类似。

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指南建议'naming_like_this'而不是'namingLikeThis' –

回答

0

是它类似于在阶自动吸气剂设置器。

不是。 self.pinA = None将设置pinA始终为None。并且对getPinA()的任何调用将始终使用input()函数,并且从不查找self.pinA值。

Python并不完全像这些JVM语言那样“封装”。换句话说,您可以随时访问属性,因此不需要“getter & setter函数”的概念。

但是,您可以使用@property,它的作用类似于实现具有基础值的getter的方式。

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