Python类没有属性错误

时间:2014-11-29 14:48:23

标签: python class

我写了这堂课:

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'。 这里出了什么问题,错误是什么意思?

3 个答案:

答案 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