我正在阅读python tutorial。
变量名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()+"-->"))
答案 0 :(得分:0)
它类似于scala中的自动getter setter。
不是真的。 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