我目前正在学习python编程(并且是一个初学者)目前我被困在文件练习(所以这些是我需要做的设定的事情,而不是做任何我想做的事情)。不幸的是,这也意味着我可能不能做任何复杂的(对我来说)捷径)
当前正在使用Python3.2.2
我需要两个不同的节目一种是输入用户输入的内容(一个名称和一个DOB),并将其放入列表中的记录中,然后将其写入二进制文件另一种方法是读取该文件并使用padding将其打印到表中。
代码:
弗斯特

    import pickle

class newperson():
    def __init__(self):
        self.name = ""
        self.dob = ""

stop = False
people = []
print("When you want to stop just hit enter")
count = 0

while stop == False:
    name = input("Please Enter the name: ")
    if len(name) == 0:
        stop = True
    else:
        people.append(newperson())
        people[count].name = name
        people[count].dob = input("Please enter their DOB: ")
        count = count + 1

file = open("ex9.4.dat", "wb")
pickle.dump(people,file)
file.close()

第二:
import pickle

myfile = open("ex9.4.dat", "rb")

people = pickle.load(myfile)

print("{0:<15}{1}".format("Name","DOB"))
for item in people:
    print("{0:<15}{1}".format(item.name,item.dob))

问题是,我在尝试运行第二个程序时遇到以下错误:
AttributeError: 'module' object has no attribute 'newperson'


    people = pickle.load(myfile)

不幸的是,当我在其他问题上寻找答案时,要么没有一个解决方案起作用,要么不适用于我,要么大部分只是在我脑子里胡思乱想。
我做错什么了?
提前谢谢你的帮助。

最佳答案

pickle加载文件时,它试图创建newperson实例,但newperson未在第二个程序中定义为了解决这个问题,您可以创建一个新文件newperson.py只包含类'newperson.py'的定义``

# newperson.py
class newperson():
    def __init__(self):
        self.name = ""
        self.dob = ""

在这两个程序中,在导入或pickle之后导入类:
from newperson import newperson

或者,您可以使用字典而不是newperson类。

关于python - AttributeError:'模块'对象没有属性'newperson',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9127714/

10-08 23:03