使用open()函数时提示AttributeError: 'str' object has no attribute 'filename'
gapfilling.py
class Gapfilling:
def __init__(self, filename):
self.filename = filename
def open_file(self):
with open(self.filename, 'r') as file_object:
return file_object
def get_items(self):
lines = Gapfilling.open_file(self.filename).readlines()
return lines
test = Gapfilling('GP_turbine.txt')
x = test.get_items()
print(x)
Traceback (most recent call last):
File "I:\PythonProgram\QstBankCreating\main.py", line 5, in
x = test.get_items()
File "I:\PythonProgram\QstBankCreating\gapfilling_function.py", line 10, in get_items
lines = Gapfilling.open_file(self.filename).readlines()
File "I:\PythonProgram\QstBankCreating\gapfilling_function.py", line 6, in open_file
with open(self.filename, 'r') as file_object:
AttributeError: 'str' object has no attribute 'filename'
运行后提示:
在类中传递一个字符串失败,实在找不出破的办法,愿解答
不应该用with好吧,就用open,可以这么写:
class Gapfilling:
def __init__(self, filename):
self.filename = filename
def open_file(self):
file_object = open(self.filename, 'r')
return file_object
def get_items(self):
obj = self.open_file()
lines = obj.readlines()
obj.close()
return lines
test = Gapfilling('name.txt')
filename = test.filename
print(test)
print(filename)
print(test.get_items())
# <__main__.Gapfilling object at 0x0000028ADE5D2380>
# name.txt
# ['Tom']
你这open_file是个无参函数,但你get_items调用它时却给了一个参数
lines = Gapfilling.open_file(self.filename).readlines()
改为
lines = open_file().readlines() 试试
另外第3行应该是self.filename = filename,不要加引号啊
改成这样:
class Gapfilling:
def __init__(self, filename):
self.filename = 'filename'
def open_file(self):
with open(self.filename, 'r') as file_object:
return file_object
def get_items(self):
lines = self.open_file().readlines()
return lines
test = Gapfilling('GP_turbine.txt')
x = test.get_items()
print(x)