我不确定我做错了什么,或者为什么会这样。
以下是我的代码:
class Expression (Node):
"""
...
"""
def __init__ (self):
self.__expressionType = None
def expressionType (self):
return self.__expressionType
class Number (Expression):
"""
Number .
"""
def __init__ (self, value):
"""
Value is an entry of type Constant.
"""
Expression.__init__(self)
assert isinstance (value, KST.Constant)
self.__constant = value
self.__expressionType = value.elementType()
对于一个数字对象,例如
n = Number(KST.Constant(..))
,对于以下语句,我总是会得到 None: n.expressionType()
现在,如果我将双下划线改为单下划线,一切都能正常运行。我理解私有和半私有变量之间的区别,但为什么会出现这种情况——我不知道。此外,我在许多其他地方使用“__”,似乎也都能正常工作。
Number
上也定义了expressionType
,那么这将起作用。但从代码复制的角度来看,您会想要使用一个下划线。 - dnozay