我正在尝试学习如何在 Python 中使用类,并通过反复试验设法使以下代码工作,但不知道如何!似乎使用了“自我”。有时需要,而在其他时候使用它会产生错误。我将非常感谢有人能解释为什么不同的代码行看起来如此不同如果我self._tot += _new用self._tot += self._newthen 替换该行,则会收到以下错误NameError: name 'self' is not defined。相反,如果我将行替换为self._tot -= self._lastthenself._tot -= _last我会收到以下错误NameError: name '_last' is not defined以这种看似相反的方式表现的代码是:-class PremiumCounter: def __init__(self, _tot = 0): self._tot = _tot self._new = 0 #self._last = 0 def add(self, _new = 1): self._tot += _new self._last = _new def undo(self): self._tot -= self._last def get_total(self): return self._tot def clear_counter(self): self._tot = 0ConcertAttendee2 = PremiumCounter(4)#Creates ConcertAttendee2 as an instance of the 'ImprovedCounter' classConcertAttendee2.clear_counter()ConcertAttendee2.add(3)ConcertAttendee2.add(3)ConcertAttendee2.undo()print("Total concert attendees: " + str(ConcertAttendee2.get_total() ))
1 回答
BIG阳
TA贡献1859条经验 获得超6个赞
正如@jonrsharpe 指出的那样,在您的undo方法中,您没有名为 的参数_last,因此您会收到self._tot -= _last.
如果从函数参数中self._tot += _new with self._tot += self._new删除,您可能会收到错误消息。self
此外,python 约定:对类属性使用下划线,而不是对参数使用下划线。下面的代码在命名约定方面更好。
class PremiumCounter:
def __init__(self, tot = 0):
self._tot = tot
self._new = 0
#self._last = 0
def add(self, new = 1):
self._tot += new
self._last = new
def undo(self):
self._tot -= self._last
def get_total(self):
return self._tot
def clear_counter(self):
self._tot = 0
添加回答
举报
0/150
提交
取消