好的,还有一个TypeError。这是我的代码:
class musssein:
def notwendig(self, name):
self.name = name
all = [] # fuer jede Eigenschaft eine extra Liste
day = []
time = []
prize = []
what = []
kategorie = []
with open(name) as f:
for line in f:
data = line.replace('\n','') #Umbruchzeichen ersetzen
if data != ' ': # immer nur bis zur neuen Zeile bzw. bis zum ' ' lesen
all.append(data) # in liste einfuegen
else:
kategorie.append(all.pop())
what.append(all.pop())
prize.append(all.pop())
time.append(all.pop())
day.append(all.pop())
def anzeige():
musssein.notwendig('schreiben.txt')
print table.Table(
table.Column('Datum', day),
table.Column('Kategorie', kategorie),
table.Column('Was?', what),
table.Column('Preis', prize, align=table.ALIGN.LEFT))
描述是德语,但它解释了你可能已经知道的内容。
当我立即开始anzeige()
时,终端只显示我:
File "test.py", line 42, in anzeige
musssein.notwendig('schreiben.txt')
TypeError: unbound method notwendig() must be called with musssein instance as first argument (got str instance instead)
我尝试了许多可能性并阅读了很多其他主题,但我没有找到解释它的正确方法。
答案 0 :(得分:0)
在调用方法
之前,必须创建(实例化)类mussein
的对象
def anzeige():
my_var = mussein()
my_var.notwendig('schreiben.txt')
self
方法的notwendig
参数为my_var
(mussein的一个实例)。
顺便说一句,通常类名必须以大写字母开头。所以在这种情况下它应该是Mussein
。
答案 1 :(得分:0)
您的方法“notwendig”期望将musssein的实例作为其第一个参数,如果在musssein实例上调用它而不是在类本身上调用它,则会透明地完成:
newinstance=musssein()
newinstance.notwendig('schreiben.txt')
相当于
newinstance=musssein()
musssein.notwendig(newinstance,'schreiben.txt')
此外,您的代码实际上并不存储文件中的信息,而是存储方法退出后立即销毁的局部变量。 您需要将方法更改为:
def notwendig(self, name):
self.name = name
self.all = [] # fuer jede Eigenschaft eine extra Liste
self.day = []
self.time = []
self.prize = []
self.what = []
self.kategorie = []
在下一个函数“anzeige”中,它们需要更改为newinstance.day
,newinstance.kategorie
等,否则您将获得未定义的全局变量错误