我写了这堂课:
class Bmi(object):
def __init__(self,regel):
self.persoon = regel
self.lengte = []
self.gewicht =[]
def parse_input(self,regels):
for regel in regels:
lengte = regel.split('\t')[2]
gewicht = regel.split('\t')[3]
self.lengte = lengte
self.gewicht = gewicht
return self.lengte, self.gewicht
我想用它来解析看起来像这样的输入,以获得每个人的长度和重量:
Dean Johnson M 1.78 83
Sophia Miller V 1.69 60
我的程序如下:
from ipy_lib import file_input
from BMI import Bmi
bestand = file_input()
for i in bestand:
Bmi(i)
i.parse_input()
我得到了AttributeError:' str'对象没有属性' parse_input'。 这里出了什么问题,错误是什么意思?
答案 0 :(得分:0)
i
是一个字符串。它还会是什么?它是来自用户输入的字符。
你的代码接受该字符串,用它实例化一个Bmi对象,然后立即抛弃该对象,并尝试在原始字符串上调用parse_input。
相反,您应该将Bmi分配给一个新变量,并在其上调用parse_input。
答案 1 :(得分:0)
正如falsetru所说,你认为你在parse_input
对象上调用Bmi
方法,但是你在i
上正在调用它,这是一个字符串。< / p>
你可能更喜欢这样做:
from ipy_lib import file_input
from BMI import Bmi
bestand = file_input()
for i in bestand:
bmi = Bmi(i)
bmi.parse_input(i)
答案 2 :(得分:0)
使用标准python来解决输入问题怎么样?
from BMI import Bmi
with open('path.to.file') as f_in:
for line in f_in:
bmi = Bmi(line.split("\t")[0]) #pass the person's name
bmi.parse_input(line) #pass all the line, and parse_input will do the stuff