我得到了这个缓冲区并被告知要进行反向输入以获取文件中的最后K行。根据我一直试图做的事情,每次我尝试运行代码时都会说使用的不是Input的属性。有人可以告诉我为什么会一直这样吗?提前谢谢。
class Input:
def __init___( self, file ):
self.file = file # must open( <filename>, "rb" )
self.length = 0
self.used = 0
self.buffer = ""
def read( self ):
if self.used < self.length: # if something in buffer
c = self.buffer[self.used]
self.used += 1
return c
else:
self.buffer = self.file.read( 20 ) # or 2048
self.length = len( self.buffer )
if self.length == 0:
return -1
else:
c = self.buffer[0]
self.used = 1
`
答案 0 :(得分:2)
我想在这里走出困境并尝试猜测问题是你使用了__init__
魔术方法的错误名称(正如Hai Vu所注意到的那样)。请注意,代码中有三个尾随下划线而不是两个。
由于__init__
方法是在构造对象期间调用以设置其各种属性的方法,因此used
属性永远不会被设置,因为__init__
函数永远不会被运行。 / p>
之后,used
是在Input.read中访问的第一个属性,这使得Python抱怨它丢失了。
如果我是对的,请删除下划线并解决问题(尽管可能还有其他问题)。
答案 1 :(得分:-1)
尝试缩进...
class Input:
def __init___( self, file ):
self.file = file # must open( <filename>, "rb" )
self.length = 0
self.used = 0
self.buffer = ""
def read( self ):
if self.used < self.length: # if something in buffer
c = self.buffer[self.used]
self.used += 1
return c
else:
self.buffer = self.file.read( 20 ) # or 2048
self.length = len( self.buffer )
if self.length == 0:
return -1
else:
c = self.buffer[0]
self.used = 1